Я хочу иметь возможность доступа к свойствам из строки JSON в моем методе действия Java. Строка доступна, просто сказав myJsonString = object.getJson()
. Ниже приведен пример того, как может выглядеть строка:
{
'title': 'ComputingandInformationsystems',
'id': 1,
'children': 'true',
'groups': [{
'title': 'LeveloneCIS',
'id': 2,
'children': 'true',
'groups': [{
'title': 'IntroToComputingandInternet',
'id': 3,
'children': 'false',
'groups': []
}]
}]
}
В этой строке каждый объект JSON содержит массив других объектов JSON. Намерение состоит в том, чтобы извлечь список идентификаторов, где любой данный объект, обладающий свойством группы, содержит другие объекты JSON. Я смотрел на Gson от Google как на потенциальный плагин JSON. Может кто-нибудь предложить какую-либо форму руководства о том, как я могу генерировать Java из этой строки JSON?
Ответы:
Google Gson поддерживает дженерики и вложенные бины .
[]
В JSON представляет собой массив , и должен отображаться в коллекции Java , такие какList
или просто обычный массив Java.{}
В JSON представляет собой объект и должен отобразить на JavaMap
или просто какой - то класс JavaBean.У вас есть объект JSON с несколькими свойствами,
groups
свойство которого представляет собой массив вложенных объектов того же типа. Это можно проанализировать с помощью Gson следующим образом:Довольно просто, не правда ли? Просто имейте подходящий JavaBean и звоните
Gson#fromJson()
.Смотрите также:
источник
Беваааааре Гсон! Это очень здорово, очень здорово, но второе вы хотите сделать что - нибудь кроме простых объектов, вы можете легко нужно начать строить свои собственные сериализаторы (который не является , что трудно).
Кроме того, если у вас есть массив объектов, и вы десериализуете некоторый JSON в этот массив объектов, истинные типы LOST! Полные объекты даже не будут скопированы! Используйте XStream. Который, используя jsondriver и устанавливая правильные настройки, будет кодировать уродливые типы в фактический json, так что вы ничего не потеряете. Небольшая цена (уродливый JSON) за настоящую сериализацию.
Обратите внимание, что Джексон исправляет эти проблемы и работает быстрее, чем GSON.
источник
Как ни странно, единственный приличный процессор JSON, упомянутый до сих пор, был GSON.
Вот более хороший выбор:
РЕДАКТИРОВАТЬ (август / 2013):
Еще один вопрос для рассмотрения:
источник
Или с Джексоном:
источник
Если по каким-либо изменениям вы находитесь в приложении, которое уже использует http://restfb.com/, то вы можете сделать:
и т.п.
источник
Простой и рабочий код Java для преобразования
JSONObject
вJava Object
Employee.java
LoadFromJSON.java
источник
источник
Если вы используете какие-либо специальные карты с ключами или значениями, а также специальные карты, вы обнаружите, что это не предусмотрено реализацией Google.
источник
Что не так со стандартными вещами?
источник
Дайте Бун попробовать:
https://github.com/RichardHightower/boon
Это злой быстро
https://github.com/RichardHightower/json-parsers-benchmark
Не верьте мне на слово ... проверьте тест Гатлинга.
https://github.com/gatling/json-parsers-benchmark
(В некоторых случаях до 4х и из сотен тестов. У него также есть режим наложения индекса, который еще быстрее. Он молодой, но уже имеет некоторых пользователей.)
Он может анализировать JSON в Maps и Lists быстрее, чем любая другая библиотека может анализировать в JSON DOM, и это без режима наложения индекса. С режимом наложения индекса Boon, это еще быстрее.
Он также имеет очень быстрый режим JSON lax и режим парсера PLIST. :) (и имеет очень мало памяти, напрямую из байтового режима с кодировкой UTF-8 на лету).
Он также имеет самый быстрый режим JSON в JavaBean.
Это новое, но если вы ищете скорость и простой API, я не думаю, что есть более быстрый или более минималистичный API.
источник
В зависимости от входного формата JSON (строка / файл) создайте jSONString. Пример объекта класса Message, соответствующего JSON, можно получить, как показано ниже:
Сообщение msgFromJSON = new ObjectMapper (). ReadValue (jSONString, Message.class);
источник
Самый простой способ заключается в том, что вы можете использовать этот метод softconvertvalue, который является пользовательским методом, в котором вы можете конвертировать jsonData в ваш определенный класс Dto.
источник