Date de format lors du retour de la date JSON
Étape 1: Créez une classe CustomObjectMapper
/ ** * Résolvez le problème que lorsque SpringMvc utilise @ResponseBody pour retourner JSON, le format de date s'affiche comme un horodatage par défaut. Besoin d'utiliser * / @Component ("CustomObjectMapper") Class public CustomObjectMapper étend ObjectMapper {public CustomObjectMapper () {CustomSerializerFactory Factory = new CustomSerializerFactory (); factory.addgenericmapping (date.class, new JSonSerializer <Ate> () {@Override public void serialize (valeur de date, JSongenerator JSongenerator, SerializerProvider Provider) lance ioException, JSONProcessingException {SimpledateFormat SDF = New SimpledateForat ("yyyy-mmd hh: mm: ss"); jsongenerator.writeString (sdf.format (valeur));}}); this.setserializerfactory (usine); }}Étape 2: La configuration est la suivante:
<mvc: annotation-driven> <mvc: message-converters> <an bean> <propriété name = "objectMapper" ref = "customObjectMapper"> </ propriété> </ bean> </mvc: Message-converters> </ mvc: annotation-drive>
Les effets sont les suivants:
Avant la mise en forme
Après la mise en forme
Avancé: retour à la date du format personnalisé
Renvoie le format de date de la chaîne JSON lors de l'utilisation de @ResponseBody. L'attribut de type date renvoie un horodatage de type long par défaut. Comment peut-il retourner un format de date personnalisé?
Solution: il existe actuellement deux façons de l'implémenter,
1. Modifications partielles (plus en ligne, mais pas recommandées);
INHERING JACKSON'S Abstract Class: JSONSerializer <T>, puis ajoutez l'annotation @jSonSerialize à la propriété Getter () du JavaBean.
Le code est le suivant:
Importer java.io.ioException; import java.text.simpledateFormat; Importer java.util.date; import org.codehaus.jackson.jsongenerator; import org.codehaus.jackson.jsonProcessingException; import org.codehaus.jackson.map.jSonSerializer; import org.codehaus.jackson.map.serializerprovider; / ** * @Description Custom return JSON Date Formatting Processing in Data Grid * / public class CustomDateSerializer étend JSonSerializer <Ate> {@Override public void serialize (Date Value, JSongenerator JSONNenerator, SerializerProvider Provider) lance ioException, newsprocessException {SimpledateFormat SDF = new SimpledateFormat ("Yyyy-mm-dd HH: mm: ss"); jsongenerator.writeString (sdf.format (valeur)); }} Comment utiliser:
@JSonSerialize (using = CustomDateSerializer.class) Public Date GetCreatEdate () {return CreateDate; } 2. Modification globale (fortement recommandée):
MappingJackSonHttpMessageConverter utilise principalement ObjectMapper pour retourner JSON Strings. Ici, nous héritons de cette classe et enregistrons un jsonserializer <t>. Injectez ensuite un objet personnalisé dans le fichier de configuration.
Le code est le suivant:
Importer java.io.ioException; import java.text.simpledateFormat; Importer java.util.date; import org.codehaus.jackson.jsongenerator; import org.codehaus.jackson.jsonProcessingException; import org.codehaus.jackson.map.jSonSerializer; import org.codehaus.jackson.map.objectmapper; import org.codehaus.jackson.map.serializerprovider; import org.codehaus.jackson.map.ser.CustomSerializerFactory; / ** * @Description Résoudre le type de date pour renvoyer le format JSON en tant que format personnalisé * / classe publique CustomObjectMapper étend ObjectMapper {public CustomObjectMapper () {CustomSerializerFactory Factory = new CustomSerializerFactory (); factory.addgenericmapping (date.class, new JSonSerializer <Ate> () {@Override public void serialize (valeur de date, JSongenerator JSongenerator, SerializerProvider Provider) lance ioException, JSONProcessingException {SimpledateFormat SDF = New SimpledateForat ("yyyy-mmd hh: mm: ss"); jsongenerator.writeString (sdf.format (valeur));}}); this.setserializerfactory (usine); }}Configurer dans Spring-Servlet.xml:
<MVC: annotation-driven> <MVC: Message-Converters> <Eban> <Property Name = "ObjectMapper" Ref = "CustomObjectMapper"> </ Property> </ Bean> </ Mvc: Message-Converters> </Mvc: Annotation-Drive> <Bean Id = "CustomObjectMapper"> </EAND>