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.jsonJava 7 y versiones posteriores.javax.jsonpaquete ú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
JsonNodeconstrucciones 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
JsonElementInterfacecon un métodostring toJson()y una clase abstractaAbstractJsonElementque implemente esa interfaz,entonces todo lo que tienes que hacer es tener una clase para
JSONPropertyque implemente la interfaz yJSONValue(cualquier token),JSONArray([...]) yJSONObject({...}) que extiendan la clase abstractaJSONObjecttiene una lista deJSONProperty'sJSONArraytiene una lista deAbstractJsonElement' ssu función de adición en cada uno debe tomar una lista de vararg de ese tipo, y devolver
thisahora, si no te gusta algo, puedes modificarlo
el beneficio de la interfaz y la clase abstracta es que
JSONArrayno puede aceptar propiedades, peroJSONPropertypuede aceptar objetos o matricesfuente