Java Spring Jackons Date de sérialisation
Je suis à l'aide de Spring MVC et Jackson pour JSON de/de sérialisation. Mais je suis face à un problème avec la sérialisation d'une date.
Par défaut Jackson sérialiser une date d'une époque. Mais je tiens à sérialiser une date ISO (c'est à dire 06-10-2011 11:00:00).
Le code ci-dessous est mon de printemps de config, mais il ne fonctionne pas. C'est encore le retour d'une époque date.
Donc ma question est, comment puis-je sérialiser à un non-époque date?
<!-- JSON -->
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" />
<property name="objectMapper" ref="jacksonObjectMapper" />
</bean>
<bean id="jacksonObjectMapper" class="org.codehaus.jackson.map.ObjectMapper" />
<bean id="jacksonSerializationConfig" class="org.codehaus.jackson.map.SerializationConfig" factory-bean="jacksonObjectMapper" factory-method="getSerializationConfig" />
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="jacksonSerializationConfig" />
<property name="targetMethod" value="setSerializationInclusion" />
<property name="arguments">
<list>
<value type="org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion">NON_NULL</value>
</list>
</property>
</bean>
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="jacksonSerializationConfig" />
<property name="targetMethod" value="setDateFormat" />
<property name="arguments">
<list>
<value type="java.text.SimpleDateFormat">yyyy-MM-dd'T'HH:mm:ss.SSSZ</value>
</list>
</property>
</bean>
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="jacksonSerializationConfig" />
<property name="targetMethod" value="enable" />
<property name="arguments">
<list>
<value type="org.codehaus.jackson.map.SerializationConfig.Feature">WRITE_DATES_AS_TIMESTAMPS</value>
</list>
</property>
</bean>
Vous devez vous connecter pour publier un commentaire.
Moyen beaucoup plus simple pour ce faire, dès le Printemps 3.1.
Puis l'enregistrer en tant que bean et de personnaliser le mvc:annotation-driven élément.
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
notez Également que si vous avez deux "<mvc:annotation-driven>" sections, cela peut échouer en mode silencieux sans avertissements 🙂Solution à l'aide de Printemps 3.1.3 et Jackson 2.1.0 qui fonctionne pour moi (basé sur Ryans réponse et Kornys notes avec d'autres modifications dans le code Java "SerializationConfig.La fonctionnalité" -> "SerializationFeature")
Configuration:
J'ai trouvé la suite de travailler avec le Printemps Plateforme 2.0 de Printemps (4.2) et Jackson 2.6.3
pom.xml
applicationContext.xml
J'ai corrigé mon problème. Donc, pour la référence à d'autres avec un problème similaire.
J'ai supprimé les éléments suivants dans le printemps contexte de config xml:
et
Puis j'ai ajouté ce qui suit:
et changé le suivant:
dans
Après ce Printemps a été en mesure de sérialiser ma date en json comme une date ISO.