Estoy pensando en algo como:
String json = new JsonBuilder()
.add("key1", "value1")
.add("key2", "value2")
.add("key3", new JsonBuilder()
.add("innerKey1", "value3"))
.toJson();
¿Qué biblioteca JSON de Java es mejor para este tipo de construcción fluida?
Actualización : Envolví GSON y obtuve casi el resultado deseado ... con un solo problema .
Respuestas:
Estoy usando la biblioteca org.json y me pareció agradable y amigable.
Ejemplo:
SALIDA:
fuente
Consulte la especificación Java EE 7 Json . Esta es la manera correcta:
fuente
javax.json
Java 7 y versiones posteriores.javax.json
paquete único es esteRecientemente creé una biblioteca para crear objetos Gson con fluidez:
http://jglue.org/fluent-json/
Funciona así:
Y a través de la magia de los genéricos, genera errores de compilación si intenta agregar un elemento a una matriz con una clave de propiedad o un elemento a un objeto sin un nombre de propiedad:
Por último, hay soporte de mapeo en la API que le permite mapear sus objetos de dominio a JSON. El objetivo es que cuando se lance Java8 podrás hacer algo como esto:
fuente
Si está utilizando Jackson para hacer muchas
JsonNode
construcciones en código, puede ser interesante el siguiente conjunto de utilidades. El beneficio de usarlos es que admiten un estilo de encadenamiento más natural que muestra mejor la estructura del JSON en construcción.Aquí hay un ejemplo de uso:
Que es equivalente al siguiente JSON:
Aquí están las clases:
Tenga en cuenta que la implementación usa Lombok , pero puede desugarlo fácilmente para completar el texto estándar de Java.
fuente
Si cree que la solución anterior es elegante, pruebe mi lib JsonBuilder . Fue creado para permitir una forma de construir estructuras json para muchos tipos de bibliotecas Json. Las implementaciones actuales incluyen Gson, Jackson y MongoDB. Por ejemplo. Jackson acaba de cambiar:
Con mucho gusto agregaré otros a pedido, también es bastante fácil implementar uno solo.
fuente
Parece que probablemente quieras ponerte en contacto con json-lib:
http://json-lib.sourceforge.net/
Douglas Crockford es el tipo que inventó JSON; su biblioteca de Java está aquí:
http://www.json.org/java/
Parece que la gente de json-lib continuó donde lo dejó Crockford. Ambos son totalmente compatibles con JSON, ambos usan (compatible, por lo que puedo decir) construcciones JSONObject, JSONArray y JSONFunction.
'Espero que ayude ..
fuente
La implementación de referencia incluye una interfaz fluida. Consulte JSONWriter y su subclase JSONStringer de implementación de toString
fuente
es mucho más fácil de lo que piensa escribir el suyo, solo use una interfaz para
JsonElementInterface
con un métodostring toJson()
y una clase abstractaAbstractJsonElement
que implemente esa interfaz,entonces todo lo que tienes que hacer es tener una clase para
JSONProperty
que implemente la interfaz yJSONValue
(cualquier token),JSONArray
([...]) yJSONObject
({...}) que extiendan la clase abstractaJSONObject
tiene una lista deJSONProperty
'sJSONArray
tiene una lista deAbstractJsonElement
' ssu función de adición en cada uno debe tomar una lista de vararg de ese tipo, y devolver
this
ahora, si no te gusta algo, puedes modificarlo
el beneficio de la interfaz y la clase abstracta es que
JSONArray
no puede aceptar propiedades, peroJSONProperty
puede aceptar objetos o matricesfuente