我有一个使用JBoss AS 7.1的JAX-RS应用程序,并且POST/GET JSON和XML对象包含日期(java.util.Date):作为ISO-8601在JSON REST Web服务中序列化日期字符串
@XmlRootElement
@XmlAccessorType(XmlAccessField.FIELD)
public class MyObject implements Serializable
{
@XmlSchemaType(name = "dateTime")
private Date date;
...
}
当我在GET方法使用@Produce( “应用程序/ XML”),则OBJETS被序列化为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提供者做日期
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class CustomJsonDateProvider implements MessageBodyWriter<Date>
{
...
}
该供应商似乎是RestEasy的JBoss上启动注册的JSON序列:
[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.
但它从来没有用过!
我的JBoss EAP 7 JAX-RS implentation是的RESTEasy和我做” nt想添加一个杰克逊依赖。经过一天的研究,我最终得到了解决方案('JacksonConfig')。我加了Maven的依赖' com.fasterxml.jackson.core 杰克逊,数据绑定 2.8.7 ',并使用了自定义的日期格式'objectMapper.setDateFormat(新的SimpleDateFormat(“dd.MM。yyyy“))'而不是使用'objectMapper.configure()'设置的缺省值 –