Estou pensando em algo como:
String json = new JsonBuilder()
.add("key1", "value1")
.add("key2", "value2")
.add("key3", new JsonBuilder()
.add("innerKey1", "value3"))
.toJson();
Qual biblioteca Java JSON é a melhor para esse tipo de construção fluente?
Atualização : Enrolei GSON e obtive quase o resultado desejado ... com um obstáculo .
Respostas:
Estou usando a biblioteca org.json e achei-a agradável e amigável.
Exemplo:
RESULTADO:
fonte
Consulte a especificação Java EE 7 Json . Este é o caminho certo:
fonte
javax.json
Java 7 e posterior.javax.json
pacote é estaRecentemente, criei uma biblioteca para criar objetos Gson com fluência:
http://jglue.org/fluent-json/
Funciona assim:
E, por meio da magia dos genéricos, ele gera erros de compilação se você tentar adicionar um elemento a uma matriz com uma chave de propriedade ou um elemento a um objeto sem um nome de propriedade:
Por último, há suporte para mapeamento na API, que permite mapear seus objetos de domínio para JSON. O objetivo é que, quando o Java8 for lançado, você seja capaz de fazer algo assim:
fonte
Se você está usando o Jackson para
JsonNode
construir muitas coisas no código, você pode se interessar pelo seguinte conjunto de utilitários. A vantagem de usá-los é que eles suportam um estilo de encadeamento mais natural que mostra melhor a estrutura do JSON em construção.Aqui está um exemplo de uso:
O que é equivalente ao seguinte JSON:
Aqui estão as aulas:
Observe que a implementação usa o Lombok , mas você pode removê-lo facilmente para preencher o padrão Java.
fonte
Se você acha que a solução acima é elegante, experimente minha biblioteca JsonBuilder . Ele foi criado para permitir uma maneira de construir estruturas json para muitos tipos de bibliotecas Json. As implementações atuais incluem Gson, Jackson e MongoDB. Para ie. Jackson acabou de trocar:
Ficarei feliz em adicionar outros a pedido, também é bastante fácil de implementar um por si mesmo.
fonte
Parece que você provavelmente deseja obter o json-lib:
http://json-lib.sourceforge.net/
Douglas Crockford é o cara que inventou JSON; sua biblioteca Java está aqui:
http://www.json.org/java/
Parece que o pessoal da json-lib começou de onde Crockford parou. Ambos suportam totalmente JSON, ambos usam (compatível, pelo que eu posso dizer) construções JSONObject, JSONArray e JSONFunction.
'Espero que ajude ..
fonte
A implementação de referência inclui uma interface fluente. Verifique JSONWriter e sua subclasse JSONStringer de implementação de toString
fonte
é muito mais fácil do que você pensa escrever o seu próprio, basta usar uma interface para
JsonElementInterface
com um métodostring toJson()
e uma classe abstrataAbstractJsonElement
implementando essa interface,então tudo que você precisa fazer é ter uma classe para
JSONProperty
que implemente a interface eJSONValue
(qualquer token),JSONArray
([...]) eJSONObject
({...}) que estenda a classe abstrataJSONObject
tem uma lista deJSONProperty
'sJSONArray
tem uma lista deAbstractJsonElement
' ssua função add em cada um deve pegar uma lista vararg desse tipo e retornar
this
agora se você não gosta de algo você pode apenas ajustá-lo
o benefício da interface e da classe abstrata é que
JSONArray
não pode aceitar propriedades, masJSONProperty
pode aceitar objetos ou matrizesfonte