Frage

ich diese Methode mit einem beliebigen Objekt in einer JSON-Zeichenfolge konvertieren:

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 gedruckten Felder enthält wobei die java.util.Date oder jodatime der Datum- und der aufgedruckten Wert sind die Anzahl der Millisekunden seit Beginn der Epoche. Ich möchte stattdessen, um sie in einem Standard-recht-print "HH: MM: SS" Notation. Wie soll ich tun, um dies zu tun?

War es hilfreich?

Lösung

Da der Unix-Zeitstempel (Anzahl der Millisekunden seit dem 1. Januar 1970, UTC) ist die effizienteste und genaue Darstellung der Zeit, fast alle Datum und Zeit verwandten Objekte sind es serialisiert. Sie können es natürlich überschreiben, und wenn Sie das Format in der Frage erwähnt verwenden möchten, würden Sie müssen Folgendes Code hinzuzufügen:

DateFormat myDateFormat = new SimpleDateFormat("hh:mm:ss");
objectMapper.getSerializationConfig().setDateFormat(myDateFormat);
objectMapper.getDeserializationConfig().setDateFormat(myDateFormat); 

Für weitere Informationen über Datum und Uhrzeit in der Jackson JSON-Prozessor finden Sie unter folgendem Link: http://wiki.fasterxml.com/JacksonFAQDateHandling

Andere Tipps

Dies wurde bereits in FAQ ersten Antwort Punkten erwähnt, aber nur für den Fall: Sie können zwischen Zahlen- und Textdarstellung (von numerischen Standard Wesen verwendet, da es viel schneller ist) wählen, indem Sie diese Funktion:

objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);

Dadurch wird das Standarddatumsformat verwenden, die Sie dann wie erwähnt neu definieren (mit setDateFormat).

Sie auch: Sie können Sie Code vereinfachen etwa so:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
return mapper.writeValueAsString(object);

anstelle von String und JsonGenerator explizit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top