Je reçois une chaîne d'objet JSON assez profonde d'un service que je dois analyser en un objet JSON, puis la mapper à des classes.
Comment puis-je transformer une chaîne JSON en objet dans Kotlin?
Après cela, le mappage aux classes respectives, j'utilisais StdDeserializer de Jackson. Le problème se pose au moment où l'objet avait des propriétés qui devaient également être désérialisées en classes. Je n'ai pas pu obtenir le mappeur d'objet, du moins je ne savais pas comment, dans un autre désérialiseur.
Merci d'avance pour votre aide. De préférence, de manière native, j'essaie de réduire le nombre de dépendances dont j'ai besoin, donc si la réponse est uniquement pour la manipulation et l'analyse JSON, cela suffirait.
Réponses:
Vous pouvez utiliser cette bibliothèque https://github.com/cbeust/klaxon
Klaxon est une bibliothèque légère pour analyser JSON dans Kotlin.
la source
Il ne fait aucun doute que l'avenir de l'analyse syntaxique dans Kotlin sera avec kotlinx.serialization. Il fait partie des bibliothèques Kotlin. Il est encore au moment de la rédaction au stade de l'incubateur.
https://github.com/Kotlin/kotlinx.serialization
la source
Json
(c'est courant). De plus, il existe plusieurs problèmes Github ouverts avec l'étiquette de bogue. Donc, c'est toujours risqué pour une utilisation en production, je dirais (à moins que vous ne soyez prêt à passer du temps à résoudre des problèmes potentiels et que vous ne prévoyez pas de le mettre à jour fréquemment). Le projet est en effet intéressant surtout pour les projets Kotlin Multiplatform, mais il n'est pas encore stable.Sans bibliothèque externe (sur Android)
Pour analyser ceci:
Utilisez ces classes:
Usage:
la source
JsonObject
si votre JVM fonctionne sous Java7 ( docs.oracle.com/javaee/7/api/javax/json/JsonObject.html )?Vous pouvez utiliser
Gson
.Exemple
Étape 1
Ajouter une compilation
Étape 2
Convertir json en
Kotlin Bean
(utilisez JsonToKotlinClass )Comme ça
Json
Les donnéesKotlin Bean
Étape 3
Utilisation
Gson
la source
{
ou[
val
propriété peut facilement l'êtrenull
si elle est absente du JSON. De plus, les valeurs par défaut ne sont pas du tout utilisées.Je ne sais pas si c'est ce dont vous avez besoin, mais c'est ainsi que je l'ai fait.
Utilisation de import org.json.JSONObject:
Voici un exemple du json:
{"Foods": [{"FoodName": "Apples", "Weight": "110"}]}
la source
data class SomeClass(val param1: Int, val param2: Int)
.for (i in 0 until foodJson!!.length()) {
place defor (i in 0..foodJson!!.length() - 1) {
. Il fait la même chose, et c'est beaucoup plus visuelJ'utilise personnellement le module Jackson pour Kotlin que vous pouvez trouver ici: jackson-module-kotlin .
A titre d'exemple, voici le code pour analyser le JSON de l'arbre de compétences Path of Exile qui est assez lourd (84k lignes une fois formaté):
Code Kotlin:
JSON (non formaté): http://filebin.ca/3B3reNQf3KXJ/rawSkilltree.json
Compte tenu de votre description, je pense que cela correspond à vos besoins.
la source
Pour convertir JSON en Kotlin, utilisez http://www.json2kotlin.com/
Vous pouvez également utiliser le plugin Android Studio. Fichier> Paramètres, sélectionnez
Plugins
dans l'arborescence de gauche, appuyez sur "Parcourir les référentiels ...", recherchez " JsonToKotlinClass ", sélectionnez-le et cliquez sur le bouton vert "Installer".Après le redémarrage AS, vous pouvez l'utiliser. Vous pouvez créer une classe avec
File > New > JSON To Kotlin Class (JsonToKotlinClass)
. Une autre façon consiste à appuyer sur Alt + K.Ensuite, vous verrez une boîte de dialogue pour coller JSON.
En 2018, j'ai dû ajouter
package com.my.package_name
au début d'un cours.la source
Tout d'abord.
Vous pouvez utiliser le plug-in de conversion de classe JSON vers Kotlin Data dans Android Studio pour le mappage JSON vers les classes POJO (classe de données kotlin). Ce plugin annotera votre classe de données Kotlin selon JSON.
Ensuite, vous pouvez utiliser le convertisseur GSON pour convertir JSON en Kotlin.
Suivez ce tutoriel complet: Tutoriel d'analyse Kotlin Android JSON
Si vous souhaitez analyser json manuellement.
Code à analyser au-dessus du tableau JSON et de son objet à l'index 0.
la source
http://www.jsonschema2pojo.org/ Salut, vous pouvez utiliser ce site Web pour convertir json en pojo.
Ctrl + Alt + Maj + k
Après cela, vous pouvez convertir manuellement cette classe de modèle en classe de modèle Kotlin. à l'aide du raccourci ci-dessus.
la source
Un peu tard, mais peu importe.
Si vous préférez analyser JSON à JavaScript comme des constructions utilisant la sémantique de Kotlin, je recommande JSONKraken , dont je suis l'auteur.
Les suggestions et opinions sur le sujet sont très appréciées!
la source
Téléchargez la source de deme à partir d'ici ( analyse Json dans Android Kotlin )
Ajoutez cette dépendance:
Appeler la fonction api:
la source