Como converter ou converter hashmap em objeto JSON em Java e converter novamente objeto JSON em string JSON?
286
Você pode usar:
new JSONObject(map);
Cuidado: Isso funcionará apenas para umMap<String, String>!
Outras funções que você pode obter na documentação
http://stleary.github.io/JSON-java/index.html
Map
emJSONObject
, mas como você pode obter este mapa de JSONObject?O Gson também pode ser usado para serializar objetos arbitrariamente complexos.
Aqui está como você o usa:
Gson
converterá automaticamente coleções emJSON
matrizes. O Gson pode serializar campos particulares e ignora automaticamente campos transitórios.fonte
Exemplo usando json
resultado::
Você também pode tentar usar o GSON do Google. O GSON do Google é a melhor biblioteca disponível para converter objetos Java em sua representação JSON.
http://code.google.com/p/google-gson/
fonte
2
ojson.toString(
2`)Você pode converter
Map
paraJSON
usar daJackson
seguinte maneira:Dependências do Maven para
Jackson
:Se você estiver usando a
JSONObject
biblioteca, poderá converter o mapa daJSON
seguinte maneira:Dependências do Maven para
JSONObject
:Espero que isso ajude. Feliz codificação.
fonte
No meu caso, eu não queria nenhuma dependência. Usando o Java 8, você pode obter JSON como uma string simples:
fonte
"
, este breaksVocê pode apenas enumerar o mapa e adicionar os pares de valor-chave ao JSONObject
Método:
fonte
A biblioteca Underscore-java pode converter o mapa de hash ou a lista de matrizes em json e vice-verso.
fonte
Tarde para a festa, mas aqui está o meu escritor adhoc da GSON para serializar o hashmap. Eu tive que escrever um mapa de pares de valores-chave como atributos de string json, esperar que um específico seja do tipo inteiro. Eu não queria criar um wrapper JavaBean personalizado para este simples caso de usuário.
A classe GSON JsonWriter é fácil de usar, a classe serializador, contendo poucas funções writer.value () fortemente tipadas.
Se nenhum dos tipos personalizados for necessário, eu poderia usar a função toJson (). A biblioteca gson-2.2.4.jar está abaixo de 190KB, sem nenhuma dependência brutal. Fácil de usar em qualquer aplicativo de servlet personalizado ou aplicativo independente, sem grandes integrações de estrutura.
fonte
Normalmente, este é o trabalho de uma biblioteca Json; você não deve tentar fazer isso sozinho. Todas as bibliotecas json devem implementar o que você está solicitando e você pode encontrar uma lista de bibliotecas Java Json em json.org , na parte inferior da página.
fonte
Eu encontrei outra maneira de lidar com isso.
Espero que isto ajude.
Obrigado.
fonte
Se você precisar usá-lo no código.
fonte
Para aqueles que usam
org.json.simple.JSONObject
, você pode converter o mapa em Json String e analisá-lo para obter oJSONObject
.fonte
Melhor chegar atrasado do que nunca. Usei o GSON para converter a lista de HashMap em string, caso você queira ter uma lista serializada.
Isso
json
produz[{"key":"value","key":"value","key":"value"}]
fonte
Gson
.Aqui está minha solução de linha única com o GSON:
fonte
Esta solução funciona com JSONs complexos:
fonte
nós usamos o Gson.
fonte
Você pode usar o XStream - é realmente útil. Veja os exemplos aqui
fonte
Se você estiver usando
net.sf.json.JSONObject
, não encontrará umJSONObject(map)
construtor nele. Você tem que usar opublic static JSONObject fromObject( Object object )
método Este método aceita seqüências de caracteres formatadas em JSON, Maps, DynaBeans e JavaBeans.JSONObject jsonObject = JSONObject.fromObject(myMap);
fonte
Se você usar objetos complexos, aplique enableComplexMapKeySerialization () , conforme indicado em https://stackoverflow.com/a/24635655/2914140 e https://stackoverflow.com/a/26374888/2914140 .
A saída será:
fonte
Não há necessidade de bibliotecas de análise Gson ou JSON. Apenas usando
new JSONObject(Map<String, JSONObject>).toString()
, por exemplo:fonte
fonte
Se você realmente não precisa do HashMap, pode fazer algo assim:
Resultado:
fonte
HashMap
, e isso não responde a isso.Estou usando o Alibaba fastjson, fácil e simples:
e importar:
Então:
Está tudo bem.
fonte
Se você estiver usando JSR 374: API Java para processamento JSON (javax json), isso parece fazer o truque:
fonte
Você pode usar o Gson . Esta biblioteca fornece métodos simples para converter objetos Java em objetos JSON e vice-versa.
Exemplo:
Você pode usar um GsonBuilder quando precisar definir opções de configuração diferentes do padrão. No exemplo acima, o processo de conversão também serializará atributos nulos do objeto.
No entanto, essa abordagem funciona apenas para tipos não genéricos. Para tipos genéricos, você precisa usar toJson (objeto, Tipo).
Mais informações sobre Gson aqui .
Lembre-se de que o objeto deve implementar a interface serializável .
fonte
isso funciona para mim:
fonte
Gson maneira para mapas e listas um pouco mais complexos usando o método TypeToken.getParameterized :
Temos um mapa parecido com este:
Obtemos o Type usando o método getParameterized acima mencionado , como este:
E, em seguida, use o objeto Gson fromJson método como este usando o objeto mapOfList como este:
O objeto mencionado NewFile se parece com isso:
O JSON desserializado fica assim:
fonte
Eu enfrentei um problema semelhante ao desserializar a resposta de comandos personalizados no selênio. A resposta foi json, mas o selênio internamente traduz isso em um java.util.HashMap [String, Object]
Se você estiver familiarizado com o scala e usar a API play para JSON, poderá se beneficiar com isso:
Descrição de código pequeno:
O código percorre recursivamente o HashMap até que tipos básicos (String, Inteiro, Booleano) sejam encontrados. Esses tipos básicos podem ser agrupados diretamente em um JsObject. Quando a recursão é desdobrada, o deepmerge concatena os objetos criados.
'@unchecked' cuida dos avisos de exclusão de tipo.
fonte
Primeiro converta todos os seus objetos em Strings válidas
Em seguida, insira o mapa inteiro em um org.json.JSONObject
Agora você pode obter o JSON simplesmente chamando toString do objeto
Crie um novo JSONObject
Ou como uma matriz de bytes para enviar por HTTP
fonte