¿Cómo convertir o convertir hashmap a un objeto JSON en Java, y nuevamente convertir un objeto JSON a una cadena JSON?
286
Puedes usar:
new JSONObject(map);
Precaución: esto solo funcionará para unMap<String, String>!
Otras funciones que puede obtener de su documentación
http://stleary.github.io/JSON-java/index.html
Map
enJSONObject
pero cómo se puede obtener a partir de este mapa JSONObject?Gson también se puede utilizar para serializar objetos complejos arbitrariamente.
Así es como lo usas:
Gson
convertirá automáticamente las colecciones aJSON
matrices. Gson puede serializar campos privados e ignora automáticamente los campos transitorios.fuente
Ejemplo usando json
salida::
También puede intentar usar GSON de Google. GSON de Google es la mejor biblioteca disponible para convertir objetos Java en su representación JSON.
http://code.google.com/p/google-gson/
fuente
2
eljson.toString(
2 ')Puede convertir
Map
aJSON
usar de laJackson
siguiente manera:Dependencias de Maven para
Jackson
:Si está utilizando la
JSONObject
biblioteca, puede convertir el mapa de laJSON
siguiente manera:Dependencias de Maven para
JSONObject
:Espero que esto ayude. Feliz codificación
fuente
En mi caso no quería ninguna dependencia. Usando Java 8 puede obtener JSON como una cadena así de simple:
fuente
"
, esto se rompeSimplemente puede enumerar el mapa y agregar los pares clave-valor al objeto JSON
Método:
fuente
La biblioteca Underscore-java puede convertir el mapa hash o la lista de matrices a json y viceversa.
fuente
Tarde a la fiesta pero aquí está mi GSON escritor ad hoc de para serializar hashmap. Tuve que escribir un mapa de pares clave-valor como atributos de cadena json, espero que uno específico sea de tipo entero. No quería crear un contenedor JavaBean personalizado para este simple caso de uso.
La clase JONWriter de GSON es una clase de serializador fácil de usar que contiene pocas funciones de escritor fuertemente escritas.
Si no se necesita ninguno de los tipos personalizados, podría haber usado la función toJson (). La biblioteca gson-2.2.4.jar tiene poco menos de 190 KB sin ninguna dependencia brutal. Fácil de usar en cualquier aplicación de servlet personalizada o aplicación independiente sin grandes integraciones de framework.
fuente
Este es típicamente el trabajo de una biblioteca Json, no debe intentar hacerlo usted mismo. Todas las bibliotecas json deben implementar lo que está solicitando, y puede encontrar una lista de bibliotecas Java Json en json.org , en la parte inferior de la página.
fuente
Encontré otra forma de manejarlo.
Espero que esto ayude.
Gracias.
fuente
Si necesita usarlo en el código.
fuente
Para aquellos que usan
org.json.simple.JSONObject
, puede convertir el mapa a Json String y analizarlo para obtener elJSONObject
.fuente
Mejor llegar tarde que nunca. Solía GSON a la lista de conversión de HashMap de cadena si en caso de que quiera tener una lista serializado.
Esto
json
produce[{"key":"value","key":"value","key":"value"}]
fuente
Gson
.Aquí mi solución de línea única con GSON:
fuente
Esta solución funciona con JSON complejos:
fuente
Usamos Gson.
fuente
Puede usar XStream, es realmente útil. Mira los ejemplos aquí
fuente
Si está utilizando,
net.sf.json.JSONObject
entonces no encontrará unJSONObject(map)
constructor en él. Tienes que usar elpublic static JSONObject fromObject( Object object )
método. Este método acepta cadenas con formato JSON, Maps, DynaBeans y JavaBeans.JSONObject jsonObject = JSONObject.fromObject(myMap);
fuente
Si usa objetos complejos, debe aplicar enableComplexMapKeySerialization () , como se indica en https://stackoverflow.com/a/24635655/2914140 y https://stackoverflow.com/a/26374888/2914140 .
La salida será:
fuente
No hay necesidad de bibliotecas de análisis Gson o JSON. Solo usando
new JSONObject(Map<String, JSONObject>).toString()
, por ejemplo:fuente
fuente
Si realmente no necesita HashMap, puede hacer algo así:
Salida:
fuente
HashMap
, y esto no responde a eso.Estoy usando Alibaba fastjson, fácil y simple:
e importar:
Luego:
Todo está bien.
fuente
Si está utilizando JSR 374: API Java para el procesamiento JSON (javax json) Esto parece ser el truco:
fuente
Puedes usar Gson . Esta biblioteca proporciona métodos simples para convertir objetos Java en objetos JSON y viceversa.
Ejemplo:
Puede usar un GsonBuilder cuando necesite establecer opciones de configuración distintas a las predeterminadas. En el ejemplo anterior, el proceso de conversión también serializará atributos nulos del objeto.
Sin embargo, este enfoque solo funciona para tipos no genéricos. Para los tipos genéricos, debe usar toJson (objeto, tipo).
Más información sobre Gson aquí .
Recuerde que el objeto debe implementar la interfaz serializable .
fuente
esto funciona para mi:
fuente
Manera de Gson para mapas y listas un poco más complejos usando el método TypeToken.getParameterized :
Tenemos un mapa que se ve así:
Obtenemos el tipo usando el método getParameterized mencionado anteriormente como este:
Y luego use el objeto Gson del método Json como este usando el objeto mapOfList como este:
El objeto mencionado NewFile se ve así:
El JSON deserializado se ve así:
fuente
Me enfrenté a un problema similar al deserializar la respuesta de los comandos personalizados en selenio. La respuesta fue json, pero el selenio se traduce internamente en java.util.HashMap [String, Object]
Si está familiarizado con scala y utiliza la API de reproducción para JSON, podría beneficiarse de esto:
Descripción del código pequeño:
El código atraviesa recursivamente el HashMap hasta que se encuentran tipos básicos (String, Integer, Boolean). Estos tipos básicos se pueden envolver directamente en un JsObject. Cuando se despliega la recursividad, la fusión profunda concatena los objetos creados.
'@unchecked' se encarga de las advertencias de borrado de tipo.
fuente
Primero convierta todos sus objetos en cadenas válidas
Luego inserte todo el mapa en un org.json.JSONObject
Ahora puede obtener el JSON simplemente llamando a toString del objeto
Crear un nuevo objeto JSON
O como una matriz de bytes para enviar a través de HTTP
fuente