Wie man JsonGenerator pretty-print-Date-und DateTime-Werte?
Ich bin mit dieser Methode konvertieren Sie jedes beliebige Objekt in einen json-string:
private String objectToJson(Object object) throws IOException {
//write JSON
StringWriter writer = new StringWriter();
ObjectMapper mapper = new ObjectMapper();
final JsonGenerator jsonGenerator = mapper.getJsonFactory().createJsonGenerator(writer);
jsonGenerator.setPrettyPrinter(new DefaultPrettyPrinter());
mapper.writeValue(jsonGenerator, object);
return writer.toString();
}
Wenn das Objekt gedruckt wird, enthält Felder, die von java.util.Datum oder jodatime der DateTime-Wert, der gedruckte Wert ist die Anzahl von Millisekunden seit Beginn der Epoche zurück. Ich möchte, statt zu pretty-print für Sie in einem standard - "HH:MM:SS" - Schreibweise. Wie gehe ich dabei vor?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil die epoch-Zeitstempel (Anzahl Millisekunden seit dem 1. Januar 1970, UTC) ist die am meisten effiziente und genaue Darstellung der Zeit, fast alle Datums-und zeitbezogene Objekte werden serialisiert, um es. Natürlich können Sie überschreiben, und wenn Sie möchten, verwenden Sie das format in der Frage genannten, würden Sie brauchen, fügen Sie den folgenden code:
Weitere Informationen bezüglich der Termine und Zeiten in der Jackson-JSON-Prozessor finden Sie unter dem folgenden link: http://wiki.fasterxml.com/JacksonFAQDateHandling
deprecated
ist eigentlichgetDeserializationConfig().withDateFormat(...)
jetztobjectMapper.setDateFormat(df)
ist der bevorzugte Weg, zu diesem Zeitpunkt (version 1.8+). Siehe: jackson.codehaus.org/1.8.8/javadoc/org/codehaus/jackson/map/...Dies wurde bereits erwähnt in der FAQ erste Antwort Punkte, aber nur für den Fall: Sie können wählen zwischen numerischen und textuellen Darstellung (numerisch wird standardmäßig verwendet, da es sehr viel schneller) mit dieser Funktion:
dadurch wird die Verwendung der Standard-Datum-format, die Sie dann neu zu definieren, wie erwähnt (mit setDateFormat).
Auch: Sie vereinfachen Sie den code in etwa so:
statt mit StringWriter und JsonGenerator ausdrücklich.