Fecha de serialización en un servicio web REST de JSON como una cadena ISO-8601
Tengo una aplicación JAX-RS que usa JBoss AS 7.1, y POST / GET JSON y objetos XML que incluyen fechas (java.util.Date):
@XmlRootElement
@XmlAccessorType(XmlAccessField.FIELD)
public class MyObject implements Serializable
{
@XmlSchemaType(name = "dateTime")
private Date date;
...
}
Cuando uso @Produce ("application / xml") en el método get, los objetos se serializan como XML y las fechas se convierten en cadenas ISO-8601 (por ejemplo, "2012-12-10T14: 50: 12.123 + 02: 00" ).
Sin embargo, si utilizo @Produce ("application / json") en el método get, las fechas en los objetos JSON son marcas de tiempo (por ejemplo, "1355147452530") en lugar de cadenas ISO-8601.
¿Cómo puedo hacer para configurar la implementación JAX-RS (RESTEasy) para serializar fechas en formato JSON como cadenas ISO-8601 en lugar de marcas de tiempo?
Gracias por sus respuestas.
Nota: también intenté usar un proveedor JAX-RS personalizado para realizar la serialización JSON para las fechas
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class CustomJsonDateProvider implements MessageBodyWriter<Date>
{
...
}
Este proveedor parece estar registrado por RESTeasy en el inicio de 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.
¡Pero nunca se usa!