Ich erhalte eine ziemlich tiefe JSON-Objektzeichenfolge von einem Dienst, den ich einem JSON-Objekt analysieren und dann Klassen zuordnen muss.
Wie kann ich eine JSON-Zeichenfolge in ein Objekt in Kotlin umwandeln?
Nach der Zuordnung zu den jeweiligen Klassen verwendete ich StdDeserializer von Jackson. Das Problem tritt in dem Moment auf, in dem das Objekt Eigenschaften hatte, die ebenfalls in Klassen deserialisiert werden mussten. Ich konnte den Objekt-Mapper in einem anderen Deserializer nicht bekommen, zumindest wusste ich nicht wie.
Vielen Dank im Voraus für jede Hilfe. Am besten nativ versuche ich, die Anzahl der benötigten Abhängigkeiten zu reduzieren. Wenn die Antwort nur für die JSON-Manipulation und das Parsen lautet, reicht dies aus.
Antworten:
Sie können diese Bibliothek unter https://github.com/cbeust/klaxon verwenden
Klaxon ist eine leichtgewichtige Bibliothek zum Parsen von JSON in Kotlin.
quelle
Es steht außer Frage, dass die Zukunft des Parsens in Kotlin bei kotlinx.serialization liegen wird. Es ist Teil der Kotlin-Bibliotheken. Es befindet sich noch zum Zeitpunkt des Schreibens im Inkubatorstadium.
https://github.com/Kotlin/kotlinx.serialization
quelle
Json
(dies ist üblich). Darüber hinaus gibt es mehrere offene Github-Probleme mit dem Bug-Label. Ich würde sagen, es ist immer noch riskant für die Verwendung in der Produktion (es sei denn, Sie sind bereit, Zeit für die Behebung potenzieller Probleme aufzuwenden und planen nicht, es regelmäßig zu aktualisieren). Das Projekt ist zwar besonders für Kotlin Multiplatform-Projekte interessant, aber noch nicht stabil.Ohne externe Bibliothek (auf Android)
Um dies zu analysieren:
Verwenden Sie diese Klassen:
Verwendung:
quelle
JsonObject
wenn Ihre JVM unter Java7 ausgeführt wird ( docs.oracle.com/javaee/7/api/javax/json/JsonObject.html )?Sie können verwenden
Gson
.Beispiel
Schritt 1
Kompilierung hinzufügen
Schritt 2
Konvertieren Sie json in
Kotlin Bean
(verwenden Sie JsonToKotlinClass )So was
Json
DatenKotlin Bean
Schritt 3
Verwenden
Gson
quelle
{
oder[
Ich bin mir nicht sicher, ob du das brauchst, aber so habe ich es gemacht.
Verwenden von import org.json.JSONObject:
Hier ist ein Beispiel des json:
{"Foods": [{"FoodName": "Apples", "Weight": "110"}]}
quelle
data class SomeClass(val param1: Int, val param2: Int)
.for (i in 0 until foodJson!!.length()) {
anstelle von verwendenfor (i in 0..foodJson!!.length() - 1) {
. Es macht das gleiche und es ist viel visuellerIch persönlich benutze das Jackson-Modul für Kotlin, das Sie hier finden: jackson-module-kotlin .
Als Beispiel finden Sie hier den Code zum Parsen des JSON des Skilltree Path of Exile, der ziemlich umfangreich ist (84.000 Zeilen bei Formatierung):
Kotlin-Code:
JSON (nicht formatiert): http://filebin.ca/3B3reNQf3KXJ/rawSkilltree.json
Angesichts Ihrer Beschreibung glaube ich, dass es Ihren Bedürfnissen entspricht.
quelle
Um JSON in Kotlin zu konvertieren, verwenden Sie http://www.json2kotlin.com/
Sie können auch das Android Studio Plugin verwenden. Datei> Einstellungen,
Plugins
im linken Baum auswählen , "Repositorys durchsuchen ..." drücken , " JsonToKotlinClass " suchen , auswählen und auf die grüne Schaltfläche "Installieren" klicken.Nach dem AS-Neustart können Sie es verwenden. Sie können eine Klasse mit erstellen
File > New > JSON To Kotlin Class (JsonToKotlinClass)
. Eine andere Möglichkeit besteht darin, Alt + K zu drücken.Dann sehen Sie einen Dialog zum Einfügen von JSON.
2018 musste ich zu
package com.my.package_name
Beginn einer Klasse hinzufügen .quelle
Zuerst.
Sie können das Plugin zur Konvertierung von JSON in Kotlin-Datenklassen in Android Studio für die JSON-Zuordnung zu POJO-Klassen (Kotlin-Datenklasse) verwenden. Dieses Plugin kommentiert Ihre Kotlin-Datenklasse gemäß JSON.
Dann können Sie den GSON-Konverter verwenden, um JSON in Kotlin zu konvertieren.
Folgen Sie diesem vollständigen Tutorial: Kotlin Android JSON Parsing Tutorial
Wenn Sie json manuell analysieren möchten.
Code zum Parsen über dem JSON-Array und seinem Objekt am Index 0.
quelle
http://www.jsonschema2pojo.org/ Hallo, Sie können diese Website verwenden, um json in pojo umzuwandeln.
Strg + Alt + Umschalt + k
Danach können Sie diese Modellklasse manuell in eine Kotlin-Modellklasse konvertieren. mit Hilfe der obigen Verknüpfung.
quelle
Ein bisschen spät, aber was auch immer.
Wenn Sie JSON lieber als JavaScript-ähnliche Konstrukte analysieren möchten , die die Kotlin-Semantik verwenden, empfehle ich JSONKraken , dessen Autor ich bin.
Vorschläge und Meinungen zu diesem Thema werden sehr geschätzt!
quelle
Laden Sie die Quelle von Deme von hier herunter ( Json analysiert in Android Kotlin )
Fügen Sie diese Abhängigkeit hinzu:
Rufen Sie die API-Funktion auf:
quelle