【发布时间】:2012-11-28 00:15:02
【问题描述】:
我有一个使用 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>
{
...
}
这个提供者似乎是在 JBoss 启动时由 RESTeasy 注册的:
[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.
但它从未使用过!
【问题讨论】:
标签: json jax-rs jboss7.x resteasy