5 Replies Latest reply on Jan 10, 2013 11:23 AM by Thomas Zlika

    Configure RESTeasy to serialize date in JSON as ISO-8601 strings

    Thomas Zlika Newbie

      Hi all,

       

      I have a JAX-RS application using JBoss AS 7.1, and I POST/GET JSON and XML objects which include Dates (java.util.Date):

       

      {code}

      @XmlRootElement

      @XmlAccessorType(XmlAccessField.FIELD)

      public class MyObject implements Serializable

      {

          @XmlSchemaType(name = "dateTime")

          private Date date;

          ...

      }

      {code}

       

      When I use @Produce("application/xml") on the get method, the objets are serialized as XML and the dates are converted into ISO-8601 strings (e.g. "2012-12-10T14:50:12.123+02:00").

       

      However, if I use @Produce("application/json") on the get method, the dates in the JSON objects are timestamps (e.g. "1355147452530") instead of ISO-8601 strings.

       

      I also tried to use a custom JAX-RS provider to do the JSON serialization for Dates

       

      {code}

      @Provider

      @Produces(MediaType.APPLICATION_JSON)

      public class CustomJsonDateProvider implements MessageBodyWriter<Date>

      {

          ...

      }

      {code}

       

      This provider seems to be registered by RESTeasy on JBoss startup:

       

      {noformat}

          [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.

      {noformat}

       

      but it is never used !

       

      How can I do to configure the JAX-RS implementation (RESTEasy) to serialize dates in JSON format as ISO-8601 strings instead of timestamps ?

       

      Thank you for your answers.