【发布时间】:2014-08-06 15:39:27
【问题描述】:
编写支持 Xml 和 JSON 媒体类型的 Web 服务。遵循 ISO 标准支持日期格式yyyy-MM-dd'T'HH:mm:ss.SSSXXX.
为了在 xml 中支持这种格式,我编写了一个 DateAdapter 类,它负责对日期字段进行编组和取消编组。
Json 格式有一个 CustomSerialization 和 Deserialization 类。它的实现几乎类似于 Adapter 类。但它会引发异常。
@Override
public void serialize(Date aDate, JsonGenerator aJsonGenerator, SerializerProvider aSerializerProvider)
throws IOException, JsonProcessingException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
String dateString = dateFormat.format(aDate);
aJsonGenerator.writeString(dateString);
}
例外:
Illegal pattern character 'X'
at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:768)
使用杰克逊 v2.2.1 工作适配器实现完全相同。
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
@Override
public String marshal(final Date v) throws Exception {
System.out.println(v);
return dateFormat.format(v);
}
@Override
public Date unmarshal(final String v) throws Exception {
System.out.println(v);
return dateFormat.parse(v);
}
【问题讨论】:
-
Z 而不是 XXX 呢?还是 XXXX?
-
请务必查看您实际使用的 java 版本的 api 文档。
-
@JoopEggen 你是对的。感谢您的回答。
-
@HimanshuYadav 这没有解释错误消息。此外,不允许使用四个
X。 -
好吧
Z并没有完全解决错误。与Z的日期看起来像2014-08-06T13:18:30.504-0400但与XXX的日期看起来像2014-08-06T13:18:30.504-04:00