Ich habe ein C# -Webapi-Projekt, das Objekte der Instanz foo
zurückgibt.Exchange-Daten von C# Webapi nach Java mit Gson
foo
enthält zwei DateTime-Eigenschaften in C#. Ich habe mein Webapi so konfiguriert, dass es immer sieben Ziffern nach dem Punkt nach der Zeit zurückgibt. Also, wenn das Objekt in Json serialisiert wurde, sieht es wie folgt aus:
{
"Timestamp": "2017-02-11T11:49:00.0000000",
"Changed": "2017-02-11T11:51:49.2620373"
}
Nun, ich versuchen, das Objekt mit Java deserialisieren. Ich wählte dafür gson
. ich konfigurieren gson
wie folgt aus:
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").create();
Nach der Deserialisierung die beiden Eigenschaften in Java wie folgt aussehen:
- Zeitstempel:
Sat Feb 11 11:49:00
, das Recht - geändert ist:
Sat Feb 11 12:35:29
, was falsch ist
Also meine Frage ist, ist es möglich,zu konfigurierenum mit der siebenstelligen Genauigkeit zu arbeiten, oder soll ich vier davon entfernen?
Rufen Sie nicht 'setDateFormat()', und Stadtplan zu 'Local ', die tatsächlich Bruchteilssekunden von mehr den 3 Ziffern behandeln kann. – Andreas
Andreas hat recht: 'Datum' kann keine ms Brüche halten, genauso wenig wie' SimpleDateFormat', und was Sie vorhaben, ist sein milder Stil: Der überflogene ms Wert wird als Sekunden und obere interpretiert. Wenn Sie Java 8 verwenden können, sollten Sie 'LocalDateTime' verwenden und einen einfachen Adapter dafür implementieren. Wenn Sie Java 8 'LocalDateTime' aus irgendeinem Grund nicht verwenden können, könnten Sie wahrscheinlich andere Datum/Uhrzeit-Bibliotheken wie Joda Time überprüfen, wenn sie ms Brüche parsen und sie auf ms Brüche in' java.util.Date' runden können. –