Formatdatum bei Rückgabe von JSON -Datum
Schritt 1: CustomObjectMapper -Klasse erstellen
/*** Lösen Sie das Problem, dass das Datumsformat standardmäßig als Zeitstempel als Zeitstempel angezeigt wird, wenn SpringMVC @ResponseBody zurückgibt. Müssen */ @Component ("CustomAbjectMapper") verwendet werden. factory.addGenericMapping(Date.class, new JsonSerializer<Date>() { @Override public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH: mm: ss "); Jsongenerator.Writestring (SDF.Format (Wert));}}); this.setserializerFactory (Fabrik); }}Schritt 2: Die Konfiguration lautet wie folgt:
<MVC: Annotationsgetrieben> <MVC: Nachrichtenkonverter> <bean> <Eigenschaft name = "ObjectMapper" Ref = "CustomObjectMapper"> </property> </bean> </mvc: Nachrichtenkonverter> </MVC: Annotationsmotiv>
Die Effekte sind wie folgt:
Vor dem Formatieren
Nach der Formatierung
Fortgeschrittene: Kehren Sie zum Datum des benutzerdefinierten Formats zurück
Gibt das Datumsformat der JSON -Zeichenfolge zurück, wenn @ResponseBody verwendet wird. Das Datumstyp -Attribut gibt standardmäßig einen langen Zeitstempel zurück. Wie kann es ein benutzerdefiniertes Datumsformat zurückgeben?
Lösung: Derzeit gibt es zwei Möglichkeiten, es zu implementieren.
1. partielle Modifikationen (mehr online, aber nicht empfohlen);
Erben Sie Jacksons abstrakte Klasse: JsonSerializer <T> und fügen Sie dann die Annotation @jsonserialize zum Eigenschaftsgenerosen () des Javabäer hinzu.
Der Code ist wie folgt:
importieren java.io.ioException; Java.Text.SimpledateFormat importieren; import Java.util.date; import org.codeehaus.jackson.jsongenerator; import org.codeehaus.jackson.jsonprocessingException; import org.codeehaus.jackson.map.jsonserializer; import org.codeehaus.jackson.map.serializerProvider; /** * @description Custom return JSON Date formatting processing in data grid*/ public class CustomDateSerializer extends JsonSerializer<Date> { @Override public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-mm-dd hh: mm: ss"); Jsongenerator.Writestring (SDF.Format (Wert)); }} Wie man verwendet:
@JsonSerialize (use = CustomDateSerializer.Class) öffentliches Datum GetCreatedate () {return createdate; } 2. Globale Modifikation (stark empfohlen):
MapingjacksonhttpMessageConverter verwendet hauptsächlich ObjectMapper, um JSON -Strings zurückzugeben. Hier erben wir diese Klasse und registrieren einen JsonSerializer <T>. Injizieren Sie dann einen benutzerdefinierten ObjectMapper in die Konfigurationsdatei.
Der Code ist wie folgt:
importieren java.io.ioException; Java.Text.SimpledateFormat importieren; import Java.util.date; import org.codeehaus.jackson.jsongenerator; import org.codeehaus.jackson.jsonprocessingException; import org.codeehaus.jackson.map.jsonserializer; import org.codeehaus.jackson.map.objectmapper; import org.codeehaus.jackson.map.serializerProvider; import org.codeehaus.jackson.map.ser.customserializerFactory; / *** @Description Lösen Sie den Datumstyp, um das JSON -Format als benutzerdefiniertes Format zurückzugeben. factory.addGenericMapping(Date.class, new JsonSerializer<Date>(){ @Override public void serialize(Date value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH: mm: ss "); Jsongenerator.Writestring (SDF.Format (Wert));}}); this.setserializerFactory (Fabrik); }}Konfigurieren Sie in feder-servlet.xml:
<MVC: Annotationsbetrieben> <MVC: Nachrichtenkonverter> <bean> <Eigenschaft name = "ObjectMapper" Ref = "CustomObjectMapper"> </property> </bean> </mvc: message-converters> </mvc: Annotation-meldung> <bean id = "customObjectmapper"