Sto provando a serializzare e quindi deserializzare un oggetto DateTime Joda usando Jackson, ma non deserializza completamente l'oggetto. Sembra che le informazioni sul fuso orario siano perse.Jackson perde l'offset dell'ora dalle date di deserializzazione a JodaTime
Questo codice:
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
mapper.configure(com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS , false);
DateTime dt = DateTime.now();
String j = mapper.writeValueAsString(dt);
DateTime dt2 = mapper.readValue(j, DateTime.class);
System.out.println("json: " + j);
System.out.println("eq? " + (dt.equals(dt2)));
System.out.println("dates:\n" + dt + "\n" + dt2);
Risulterà:
json: "2013-10-18T14:10:52.458-07:00"
eq? false
dates:
2013-10-18T14:10:52.458-07:00
2013-10-18T21:10:52.458Z
È questo disegno? C'è qualcosa che posso fare qui, a meno di scrivere il mio serializzatore/deserializzatore? Ho visto alcune domande su questo su SO, ma nessuno che si occupi specificamente di questo aspetto.
sto usando Joda 2.1 e Jackson 2.1
Quindi c'è un intero modulo dedicato alla gestione degli oggetti Joda, ma esegue la serializzazione nel modo più semplicistico possibile, non riuscendo a conservare le informazioni cruciali ... Questo è un peccato. Sembra che dovrò scrivere il mio deserializzatore. – Vysarat
Invece di lamentarti, hai effettivamente provato a contattare gli autori del modulo, offrendo il tuo aiuto? La lagnanza di SO non è un modo produttivo per lavorare con i progetti OSS. – StaxMan