Retrofit-GSON serialisiert Datum vom json-string in long oder java.lang.Lange
Ich bin mit dem Retrofit-Bibliothek für meine REST-Aufrufe.
Die JSON-das kommt in etwa so aussieht.
{
"created_at": "2013-07-16T22:52:36Z",
}
Wie kann ich feststellen, Retrofit oder Gson zu konvertieren, das in lange?
Sie können verwenden einen benutzerdefinierten Typ Konverter (aber ich weiß nicht, wie einfach einschränken, diese zu einem bestimmten Feld statt einer ganzen-Typ)
als Randnotiz, diese
die
als Randnotiz, diese
Z
sieht seltsam aus. Ich würde Wetten, auf ein Formatierungs-Problem auf der server-Seite.die
Z
einfach bedeutet, dass es keine offset von UTC - mehr Infos von wikipediaInformationsquelleAutor user2524597 | 2015-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ganz einfach tun dies, indem Sie eine benutzerdefinierte GsonConverter mit Ihrem eigenen Gson-Objekt auf die retrofit-Instanz. In Ihrem POJO können Sie
Date created_at;
statt einer langen oder einer Zeichenfolge. Aus dem date-Objekt können Siecreated_at.getTime()
zu bekommen, die lange, wenn nötig.Können Sie auch Unterstützung für mehrere Datum-string-Formate durch Registrierung einer benutzerdefinierten
JsonDeserializer
auf die gson-Instanz verwendet, die durch NachrüstungInformationsquelleAutor Aegis
Lesen, es als string in Ihre POJO dann nutzen Sie Ihre get es zurück, als eine lange:
den string " = SimpleDateFormat auf die verwiesen werden kann hier
Dies ist nicht für mich arbeiten, aus irgendeinem Grund... pastebin.com/rizyZJR5
ohne zu sehen, Ihren Ausgang oder wirklich bewusst zu sein, die Unterschiede der
DateFormat
vsSimpleDateFormat
ich würde sagen, versuchen Sie es mit " = SimpleDateFormat.InformationsquelleAutor pula
Nach Lesen der Dokumentation habe ich versucht, dieses. Es funktioniert, aber ich weiß nicht, ob es eine Auswirkung auf andere Arten.
Ich musste eine lange in meiner POJO, coz i dont wanna konvertieren beim speichern in die db.
Habe ich eine benutzerdefinierte deserializer
und es
Sie benötigen angeben .setDateFormat(...)? Mine gearbeitet, ohne dass.
InformationsquelleAutor user2524597
Können Sie einfach verwenden Sie diese
setDateFormat()
Methode, es zu tunIllegalArgumentException: Unterminated quote
wenn initialisiert. Sie gesehen haben könnten, wenn Sie hatte getestet vor der VeröffentlichungInformationsquelleAutor Gowtham Raj
Können Sie die parse-Muster in der
GsonBuilder.setDateFormat()
und Datum-Objekt in der POJO und dann rufen SieDate.getMillis()
setDateFormat()
InformationsquelleAutor Towlie288
Sollten Sie mit einer Art adapter in Ihrem
Gson
etwa durchAber kann ich schlage vor, dass anstelle der Verwendung einer SimpleDateFormatter Sie einen Blick auf diese Umsetzung von FasterXML/jackson-databind-Implementierungen für nach ISO8601 Datum handling in diese Klasse und diese eine. Es hängt stark davon ab, ob Sie der Analyse einer Menge von Daten oder nicht.
Beachten Sie auch, dass wir lief in Probleme mit SimpleDateFormatter innerhalb einer Android-Anwendung (wir verwenden eine Kombination von Java-und Android-Bibliotheken), wo es unterschiedliche Ergebnisse zwischen den Parsen in Java und Android. Mithilfe der oben genannten Implementierungen geholfen, dieses Problem zu lösen.
Dies ist die Die Java-Implementierung und dies ist die Android-Umsetzung, nicht die definition für
Z
undX
in der Java-Umsetzung und die fehlendeX
Implementierung in AndroidInformationsquelleAutor Phil H
Unten code ist getestet, und schließlich wird er nach viel Bemühungen.
vor dem erstellen retrofit-Objekt erstellen Gson-Objekt
jetzt und erstellen retrofit-Instanz
erstellen, die diese zwei-Klassen zum serialisieren und Deserialisieren von Datum format
InformationsquelleAutor Amol Suryawanshi