我有一個使用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()'設置的缺省值 –