Ho un'applicazione JAX-RS che utilizza JBoss AS 7.1 e I POST/GET oggetti JSON e XML che includono Date (java.util.Date):Serializzare la data in un servizio Web JSON REST come stringa ISO-8601
Quando uso @Produce ("application/xml") sul metodo get, gli oggetti vengono serializzati come XML e le date vengono convertite in stringhe ISO-8601 (ad esempio "2012-12-10T14: 50: 12.123 +02: 00").
Tuttavia, se uso @Produce ("application/json") sul metodo get, le date negli oggetti JSON sono timestamp (ad esempio "1355147452530") anziché le stringhe ISO-8601.
Come è possibile configurare l'implementazione JAX-RS (RESTEasy) per serializzare le date in formato JSON come stringhe ISO-8601 anziché timestamp?
Grazie per le vostre risposte.
Nota: Ho anche provato ad utilizzare un provider personalizzato JAX-RS per fare la serializzazione JSON per le date
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class CustomJsonDateProvider implements MessageBodyWriter<Date>
{
...
}
Questo provider sembra essere registrato da RESTEasy su JBoss all'avvio:
[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.
ma non è mai usato!
mio JBoss EAP 7 JAX-RS implentation è RESTEasy e l'ho fatto' Voglio aggiungere una dipendenza Jackson. Dopo un giorno di ricerche, ho trovato la soluzione ('JacksonConfig'). Ho aggiunto Maven dipendenza ' com.fasterxml.jackson.core jackson-databind 2.8.7 ' e usato un formato di data personalizzato 'objectMapper.setDateFormat (nuova SimpleDateFormat (" dd.MM.yyyy "))" invece del predefinito impostato con 'objectMapper.configure()' –