Recibo una cadena de objeto JSON bastante profunda de un servicio que debo analizar en un objeto JSON y luego asignarlo a las clases.
¿Cómo puedo transformar una cadena JSON en un objeto en Kotlin?
Después de eso, el mapeo a las clases respectivas, estaba usando StdDeserializer de Jackson. El problema surge en el momento en que el objeto tenía propiedades que también debían ser deserializadas en clases. No pude obtener el mapeador de objetos, al menos no sabía cómo, dentro de otro deserializador.
Gracias de antemano por cualquier ayuda. Preferiblemente, de forma nativa, estoy tratando de reducir la cantidad de dependencias que necesito, por lo que si la respuesta es solo para la manipulación y el análisis de JSON, sería suficiente.
Respuestas:
Puede utilizar esta biblioteca https://github.com/cbeust/klaxon
Klaxon es una biblioteca ligera para analizar JSON en Kotlin.
fuente
No hay duda de que el futuro del análisis sintáctico en Kotlin será con kotlinx.serialization. Es parte de las bibliotecas de Kotlin. Todavía se encuentra en el momento de escribir este artículo en etapa de incubadora.
https://github.com/Kotlin/kotlinx.serialization
fuente
Json
(es común). Además, hay varios problemas abiertos de Github con la etiqueta del error. Por lo tanto, diría que su uso en producción sigue siendo riesgoso (a menos que esté dispuesto a dedicar tiempo a solucionar problemas potenciales y no planee actualizarlo con frecuencia). El proyecto es realmente interesante, especialmente para los proyectos multiplataforma de Kotlin, pero aún no es estable.Sin biblioteca externa (en Android)
Para analizar esto:
Utilice estas clases:
Uso:
fuente
JsonObject
si su JVM se ejecuta en Java7 ( docs.oracle.com/javaee/7/api/javax/json/JsonObject.html )?Puede utilizar
Gson
.Ejemplo
Paso 1
Agregar compilar
Paso 2
Convierta json a
Kotlin Bean
(use JsonToKotlinClass )Me gusta esto
Json
datosKotlin Bean
Paso 3
Utilizar
Gson
fuente
{
o[
val
propiedad puede ser fácilmentenull
si falta en el JSON. Además, los valores predeterminados no se utilizan en absoluto.No estoy seguro si esto es lo que necesita, pero así es como lo hice.
Usando import org.json.JSONObject:
Aquí hay una muestra del json:
{"Alimentos": [{"Nombre de alimentos": "Manzanas", "Peso": "110"}]}
fuente
data class SomeClass(val param1: Int, val param2: Int)
?for (i in 0 until foodJson!!.length()) {
lugar defor (i in 0..foodJson!!.length() - 1) {
. Hace lo mismo, y es bastante más visualYo personalmente uso el módulo Jackson para Kotlin que puedes encontrar aquí: jackson-module-kotlin .
Como ejemplo, aquí está el código para analizar el JSON del árbol de habilidades Path of Exile que es bastante pesado (84k líneas cuando se formatea):
Código Kotlin:
JSON (sin formato): http://filebin.ca/3B3reNQf3KXJ/rawSkilltree.json
Dada su descripción, creo que coincide con sus necesidades.
fuente
Para convertir JSON a Kotlin, use http://www.json2kotlin.com/
También puede usar el complemento de Android Studio. Archivo> Configuración, seleccione
Plugins
en el árbol de la izquierda, presione "Examinar repositorios ...", busque " JsonToKotlinClass ", selecciónelo y haga clic en el botón verde "Instalar".Después de reiniciar AS, puede usarlo. Puedes crear una clase con
File > New > JSON To Kotlin Class (JsonToKotlinClass)
. Otra forma es presionar Alt + K.Luego verá un cuadro de diálogo para pegar JSON.
En 2018 tuve que agregar
package com.my.package_name
al comienzo de una clase.fuente
Ante todo.
Puede usar el complemento de conversión de clase de JSON a Kotlin Data en Android Studio para el mapeo JSON a clases POJO (clase de datos kotlin). Este complemento anotará su clase de datos Kotlin de acuerdo con JSON.
Luego puede usar el convertidor GSON para convertir JSON a Kotlin.
Siga este tutorial completo: Kotlin Android JSON Parsing Tutorial
Si desea analizar json manualmente.
Código para analizar por encima de JSON Array y su objeto en el índice 0.
fuente
http://www.jsonschema2pojo.org/ Hola, puede utilizar este sitio web para convertir json a pojo.
control + Alt + Mayús + k
Después de eso, puede convertir manualmente esa clase de modelo en la clase de modelo kotlin. con la ayuda del atajo anterior.
fuente
Un poco tarde, pero como sea.
Si prefiere analizar JSON a JavaScript como construcciones que utilizan la semántica de Kotlin, le recomiendo JSONKraken , del cual soy el autor.
¡Las sugerencias y opiniones al respecto son muy apreciadas!
fuente
Descargue la fuente de deme desde aquí ( análisis de Json en android kotlin )
Agregue esta dependencia:
Llamar a la función api:
fuente