Qual é a melhor maneira de converter um código JSON como este:
{
"data" :
{
"field1" : "value1",
"field2" : "value2"
}
}
em um mapa Java em que uma das chaves está (campo1, campo2) e os valores para esses campos são (valor1, valor2).
Alguma ideia? Devo usar o Json-lib para isso? Ou melhor, se eu escrever meu próprio analisador?
java
json
parsing
collections
David Santamaria
fonte
fonte
Respostas:
Espero que você esteja brincando sobre escrever seu próprio analisador. :-)
Para um mapeamento tão simples, a maioria das ferramentas de http://json.org (seção java) funcionaria. Para um deles (Jackson https://github.com/FasterXML/jackson-databind/#5-minute-tutorial-streaming-parser-generator ), você faria:
(onde JSON_SOURCE é um arquivo, fluxo de entrada, leitor ou sequência de conteúdo json)
fonte
Map<String,Object> result = mapper.readValue(source, Map.class)
.Usando a biblioteca GSON:
Use o seguinte código:
fonte
TypeToken<Map<String, Map>>
:-)Eu gosto da biblioteca do Google Gson .
Quando você não conhece a estrutura do json. Você pode usar
e então você pode trabalhar com json. por exemplo, como obter "value1" do seu gson:
fonte
Use JSON lib, por exemplo, http://www.json.org/java/
fonte
Minha postagem pode ser útil para outras pessoas, então imagine que você tenha um mapa com um objeto específico em valores, algo assim:
Para analisar esse arquivo JSON com a biblioteca GSON, é fácil: se o seu projeto estiver atualizado
Em seguida, use este trecho:
O POJO correspondente deve ser algo assim:
Espero que ajude !
fonte
Desta forma, funciona como um mapa ...
fonte
JsonMap implements Map<String,Object
para encapsular JSONObject. então você obtém a verdadeiraMap
interface.Eu faço assim. É simples.
fonte
fonte
A biblioteca JsonTools é muito completa. Pode ser encontrado no Github .
fonte
Com o Gson 2.7 do Google (provavelmente versões anteriores também, mas eu testei o 2.7), é tão simples quanto:
Que retorna um mapa do tipo
class com.google.gson.internal.LinkedTreeMap
e funciona recursivamente em objetos aninhados.fonte
Mais uma alternativa é o json-simple, que pode ser encontrado no Maven Central :
O artefato tem 24kbytes, não possui outras dependências de tempo de execução.
fonte
null
de volta a partir de uma string JSON simples, onde um dos valores é uma matriz de strings.Se você estiver usando org.json, JSONObject tem um método
toMap()
. Você pode fazer facilmente:fonte
fonte
Underscore-java biblioteca pode converter a string json em mapa de hash. Eu sou o mantenedor do projeto.
Exemplo de código:
fonte
Se você precisar de Java puro sem nenhuma dependência, poderá usar a build na API Nashorn do Java 8. Ele está obsoleto no Java 11.
Isso está funcionando para mim:
Uso da amostra
JSON:
Código:
fonte
Tente este código:
fonte
JSON para mapear sempre será um tipo de dados string / objeto. Eu tenho o GSON lib do google.
funciona muito bem e o JDK 1.5 é o requisito mínimo.
fonte