Я думаю о чем-то вроде:
String json = new JsonBuilder()
.add("key1", "value1")
.add("key2", "value2")
.add("key3", new JsonBuilder()
.add("innerKey1", "value3"))
.toJson();
Какая библиотека Java JSON лучше всего подходит для такого плавного построения?
Обновление : завернул GSON и получил почти желаемый результат ... с одной заминкой .
Ответы:
Я использую библиотеку org.json и считаю ее приятной и дружелюбной.
Пример:
ВЫВОД:
источник
См. Спецификацию Java EE 7 Json . Это правильный путь:
источник
javax.json
Java 7 и более поздних версий.javax.json
пакета это одинНедавно я создал библиотеку для свободного создания объектов Gson:
http://jglue.org/fluent-json/
Это работает так:
И благодаря магии дженериков он генерирует ошибки компиляции, если вы пытаетесь добавить элемент в массив с ключом свойства или элемент к объекту без имени свойства:
Наконец, в API есть поддержка сопоставления, которая позволяет сопоставлять объекты вашего домена с JSON. Цель состоит в том, что после выпуска Java8 вы сможете сделать что-то вроде этого:
источник
Если вы используете Jackson и много
JsonNode
строите код, вам может быть интересен следующий набор утилит. Преимущество их использования заключается в том, что они поддерживают более естественный стиль цепочки, который лучше показывает структуру строящегося JSON.Вот пример использования:
Это эквивалентно следующему JSON:
Вот классы:
Обратите внимание, что реализация использует Lombok , но вы можете легко удалить сахар, чтобы заполнить шаблон Java.
источник
Если вы думаете, что вышеприведенное решение элегантно, попробуйте мою JsonBuilder lib. Он был создан, чтобы обеспечить один способ построения структур json для многих типов библиотек Json. Текущие реализации включают Gson, Jackson и MongoDB. Для т.е. Джексон просто поменялся местами:
Я с радостью добавлю другие по запросу, также довольно легко реализовать один самостоятельно.
источник
Похоже, вы, вероятно, захотите получить json-lib:
http://json-lib.sourceforge.net/
Дуглас Крокфорд - парень, который изобрел JSON; его библиотека Java находится здесь:
http://www.json.org/java/
Похоже, люди из json-lib начали с того места, где остановился Крокфорд. Оба полностью поддерживают JSON, оба используют (совместимые, насколько я могу судить) конструкции JSONObject, JSONArray и JSONFunction.
'Надеюсь, это поможет ..
источник
Эталонная реализация включает в себя интерфейс свободно. Ознакомьтесь с JSONWriter и его подклассом JSONStringer, реализующим toString.
источник
гораздо проще, чем вы думаете, написать свой собственный, просто используйте интерфейс для
JsonElementInterface
методаstring toJson()
и абстрактный класс,AbstractJsonElement
реализующий этот интерфейс,тогда все, что вам нужно сделать, это иметь класс
JSONProperty
, реализующий интерфейс, иJSONValue
(любой токен),JSONArray
([...]) иJSONObject
({...}), которые расширяют абстрактный классJSONObject
имеет списокJSONProperty
«sJSONArray
есть списокAbstractJsonElement
» сваша функция добавления в каждом должна принимать список vararg этого типа и возвращать
this
теперь, если вам что-то не нравится, вы можете просто настроить это
Преимущество интерфейса и абстрактного класса в том, что он
JSONArray
не может принимать свойства, ноJSONProperty
может принимать объекты или массивыисточник
Вы можете использовать один из шаблонов Java. Мне нравится этот метод, потому что вы отделяете свою логику от представления.
Java 8+:
Java 6/7:
Пример файла шаблона:
Может быть задействован какой-то вспомогательный код:
И приведет к:
источник