我有一个使用 JBoss AS 7.1 的 JAX-RS 应用程序,并且我发布/获取 JSON 和 XML 对象,其中包括日期(java.util.Date):
@XmlRootElement
@XmlAccessorType(XmlAccessField.FIELD)
public class MyObject implements Serializable
{
@XmlSchemaType(name = "dateTime")
private Date date;
...
}
当我在 get 方法上使用 @Produce("application/xml") 时,对象被序列化为 XML,日期被转换为 ISO-8601 字符串(例如“2012-12-10T14:50:12.123+02:00” )。
但是,如果我在 get 方法上使用 @Produce("application/json"),则 JSON 对象中的日期是时间戳(例如“1355147452530”)而不是 ISO-8601 字符串。
如何配置 JAX-RS 实现 (RESTEasy) 以将 JSON 格式的日期序列化为 ISO-8601 字符串而不是时间戳?
谢谢您的回答。
注意:我还尝试使用自定义 JAX-RS 提供程序对日期进行 JSON 序列化
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class CustomJsonDateProvider implements MessageBodyWriter<Date>
{
...
}
这个提供者似乎是由 RESTeasy 在 JBoss 启动时注册的:
[org.jboss.jaxrs] Adding JAX-RS provider classes: package.CustomJsonDateProvider
...
[org.jboss.resteasy.cdi.CdiInjectorFactory] No CDI beans found for class package.CustomJsonDateProvider. Using default ConstructorInjector.
但它从未使用过!