Estou recebendo uma string de objeto JSON bastante profunda de um serviço que devo analisar para um objeto JSON e, em seguida, mapeá-lo para classes.
Como posso transformar uma string JSON em objeto em Kotlin?
Depois disso o mapeamento para as respectivas classes, usei o StdDeserializer da Jackson. O problema surge no momento em que o objeto tinha propriedades que também precisavam ser desserializadas em classes. Não consegui colocar o mapeador de objetos, pelo menos não sabia como, dentro de outro desserializador.
Agradecemos antecipadamente por qualquer ajuda. De preferência, nativamente, estou tentando reduzir o número de dependências de que preciso, então, se a resposta for apenas para manipulação e análise JSON, seria o suficiente.
Respostas:
Você pode usar esta biblioteca https://github.com/cbeust/klaxon
Klaxon é uma biblioteca leve para analisar JSON em Kotlin.
fonte
Não há dúvida de que o futuro da análise em Kotlin será com kotlinx.serialization. Faz parte das bibliotecas Kotlin. Ainda está em fase de incubação.
https://github.com/Kotlin/kotlinx.serialization
fonte
Json
(é comum). Além disso, existem vários problemas abertos no Github com o rótulo do bug. Portanto, ainda é arriscado para uso em produção, eu diria (a menos que você esteja disposto a gastar tempo corrigindo problemas em potencial e não planeje atualizá-lo com frequência). O projeto é realmente interessante, especialmente para projetos de Multiplataforma Kotlin, mas ainda não é estável.Sem biblioteca externa (no Android)
Para analisar isso:
Use estas classes:
Uso:
fonte
JsonObject
se o seu JVM estiver executando em Java7 ( docs.oracle.com/javaee/7/api/javax/json/JsonObject.html )?Você pode usar
Gson
.Exemplo
Passo 1
Adicionar compilar
Passo 2
Converter json para
Kotlin Bean
(usar JsonToKotlinClass )Como isso
Json
dadosKotlin Bean
etapa 3
Usar
Gson
fonte
{
ou[
val
propriedade pode ser facilmentenull
se estiver faltando no JSON. Além disso, os valores padrão não são usados.Não tenho certeza se é isso que você precisa, mas é assim que eu fiz.
Usando import org.json.JSONObject:
Aqui está um exemplo do json:
{"Alimentos": [{"FoodName": "Maçãs", "Peso": "110"}]}
fonte
data class SomeClass(val param1: Int, val param2: Int)
.for (i in 0 until foodJson!!.length()) {
vez defor (i in 0..foodJson!!.length() - 1) {
. Ele faz o mesmo e é bem mais visualEu pessoalmente uso o módulo Jackson para Kotlin que você pode encontrar aqui: jackson-module-kotlin .
Por exemplo, aqui está o código para analisar o JSON da árvore de habilidades do Path of Exile, que é bastante pesado (84k linhas quando formatado):
Código Kotlin:
JSON (não formatado): http://filebin.ca/3B3reNQf3KXJ/rawSkilltree.json
Dada a sua descrição, acredito que corresponda às suas necessidades.
fonte
Para converter JSON em Kotlin, use http://www.json2kotlin.com/
Além disso, você pode usar o plugin Android Studio. Arquivo> Configurações, selecione
Plugins
na árvore à esquerda, pressione "Navegar nos repositórios ...", pesquise " JsonToKotlinClass ", selecione-o e clique no botão verde "Instalar".Após a reinicialização do AS, você pode usá-lo. Você pode criar uma classe com
File > New > JSON To Kotlin Class (JsonToKotlinClass)
. Outra maneira é pressionar Alt + K.Em seguida, você verá uma caixa de diálogo para colar JSON.
Em 2018 tive que adicionar
package com.my.package_name
no início de uma aula.fonte
Em primeiro lugar.
Você pode usar o plug-in conversor de classe JSON para Kotlin Data no Android Studio para mapeamento JSON para classes POJO (classe de dados kotlin). Este plugin irá anotar sua classe de dados Kotlin de acordo com JSON.
Depois, você pode usar o conversor GSON para converter JSON em Kotlin.
Siga este tutorial completo: Tutorial de análise JSON do Kotlin Android
Se você deseja analisar json manualmente.
Código a ser analisado acima da matriz JSON e seu objeto no índice 0.
fonte
http://www.jsonschema2pojo.org/ Olá, você pode usar este site para converter json para pojo.
control + Alt + shift + k
Depois disso, você pode converter manualmente essa classe de modelo em classe de modelo kotlin. com a ajuda do atalho acima.
fonte
Um pouco tarde, mas tanto faz.
Se você preferir analisar JSON em vez de JavaScript, como construções que usam a semântica Kotlin, recomendo JSONKraken , do qual sou o autor.
Agradecemos as sugestões e opiniões sobre o assunto!
fonte
Baixe o código-fonte do deme aqui ( análise Json em android kotlin )
Adicione esta dependência:
Função API de chamada:
fonte