Каков наилучший способ преобразовать код JSON следующим образом:
{
"data" :
{
"field1" : "value1",
"field2" : "value2"
}
}
в Java-карте, в которой используются ключи (field1, field2) и значения для этих полей (value1, value2).
Любые идеи? Должен ли я использовать Json-lib для этого? Или лучше, если я напишу свой собственный парсер?
java
json
parsing
collections
Дэвид Сантамария
источник
источник
Ответы:
Я надеюсь, что вы шутили о написании своего собственного парсера. :-)
Для такого простого отображения будет работать большинство инструментов из http://json.org (раздел java). Для одного из них (Джексон https://github.com/FasterXML/jackson-databind/#5-minute-tutorial-streaming-parser-generator ) вы должны сделать:
(где JSON_SOURCE - это файл, поток ввода, читатель или строка содержимого json)
источник
Map<String,Object> result = mapper.readValue(source, Map.class)
.Использование библиотеки GSON:
Используйте следующий код:
источник
TypeToken<Map<String, Map>>
:-)Мне нравится библиотека Google GSON .
Когда вы не знаете структуру JSON. Ты можешь использовать
и тогда вы можете работать с JSON. Например, как получить "value1" из вашего gson:
источник
Используйте JSON lib Например, http://www.json.org/java/
источник
Мой пост может быть полезен для других, так что представьте, что у вас есть карта с определенным объектом в значениях, что-то вроде этого:
Разобрать этот файл JSON с библиотекой GSON легко: если ваш проект mavenized
Затем используйте этот фрагмент:
Соответствующий POJO должен быть примерно таким:
Надеюсь, поможет !
источник
Таким образом, он работает как карта ...
источник
JsonMap implements Map<String,Object
чтобы обернуть JSONObject. тогда вы получите настоящийMap
интерфейс.Я делаю это так. Это просто.
источник
источник
Библиотека JsonTools очень полная. Его можно найти на Github .
источник
С gson 2.7 от Google (возможно, и с более ранними версиями, но я тестировал 2.7) это так просто:
Который возвращает карту типа
class com.google.gson.internal.LinkedTreeMap
и работает рекурсивно на вложенных объектах.источник
Еще одна альтернатива - json-simple, которую можно найти в Maven Central :
Артефакт размером 24 КБ не имеет других зависимостей времени выполнения.
источник
null
возвращаюсь из простой строки JSON, где одним из значений является массив строк.Если вы используете org.json, у JSONObject есть метод
toMap()
. Вы можете легко сделать:источник
источник
Библиотека Underscore-java может конвертировать строку json в хэш-карту. Я поддерживаю проект.
Пример кода:
источник
Если вам нужна чистая Java без каких-либо зависимостей, вы можете использовать сборку в Nashorn API из Java 8. Это устарело в Java 11.
Это работает для меня:
Пример использования
JSON:
Код:
источник
Попробуйте этот код:
источник
JSON to Map всегда будет строковым / объектным типом данных. я получил GSON lib от Google.
работает очень хорошо и JDK 1.5 является минимальным требованием.
источник