В проекте Java Maven, как вы генерируете исходные файлы Java из JSON? Например, у нас есть
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York"
}
}
Когда мы запускаем, mvn generate-sources
мы хотим, чтобы он генерировал что-то вроде этого:
class Address {
JSONObject mInternalJSONObject;
Address (JSONObject json){
mInternalJSONObject = json;
}
String getStreetAddress () {
return mInternalJSONObject.getString("streetAddress");
}
String getCity (){
return mInternalJSONObject.getString("city");
}
}
class Person {
JSONObject mInternalJSONObject;
Person (JSONObject json){
mInternalJSONObject = json;
}
String getFirstName () {
return mInternalJSONObject.getString("firstName");
}
String getLastName (){
return mInternalJSONObject.getString("lastName");
}
Address getAddress (){
return Address(mInternalJSONObject.getString("address"));
}
}
Как разработчик Java, какие строки XML мне нужно написать в моем pom.xml
, чтобы это произошло?
Ответы:
Попробуйте подключаемый модуль jsonschema2pojo :
В
<sourceType>json</sourceType>
охватывает случай , когда источники JSON (например , ОР). Если у вас есть реальные схемы JSON , удалите эту строку.Обновлено в 2020 году. С декабря 2009 года, когда был задан этот вопрос, произошли две вещи:
Спецификация JSON Schema сильно изменилась. Он все еще в черновике (не завершен), но близок к завершению и теперь является жизнеспособным инструментом, определяющим ваши структурные правила
Недавно я начал новый проект с открытым исходным кодом, специально предназначенный для решения вашей проблемы: jsonschema2pojo . Инструмент jsonschema2pojo берет документ схемы json и генерирует классы Java в стиле DTO (в форме исходных файлов .java). Проект еще не завершен, но уже охватывает наиболее полезные части схемы JSON. Я ищу больше отзывов от пользователей, чтобы помочь развитию. Прямо сейчас вы можете использовать инструмент из командной строки или в качестве плагина Maven.
Надеюсь это поможет!
источник
Если вы используете Джексон (самая популярная библиотека там), попробуйте
https://github.com/astav/JsonToJava
Его открытый исходный код, и каждый должен иметь возможность внести свой вклад.
Резюме
Генератор файлов исходного класса JsonToJava, который выводит схему на основе предоставленных выборочных данных json и генерирует необходимые структуры данных java.
Это побуждает команды сначала думать о Json, прежде чем писать настоящий код.
Характеристики
источник
Вот онлайн-инструмент, который будет принимать JSON, включая вложенные объекты или вложенные массивы объектов, и генерировать исходный код Java с аннотациями Джексона.
источник
Отвечая на этот старый вопрос с недавним проектом ;-).
На данный момент лучшим решением, вероятно, является JsonSchema2Pojo :
Это делает работу с редко используемой Json Schema, но также и с простым Json. Он предоставляет плагин Ant и Maven, а тестовое приложение онлайн может дать вам представление об инструменте. Я положил Json Tweet и сгенерировал весь содержащий класс (Tweet, User, Location и т. Д.).
Мы будем использовать его в проекте Agorava для создания карт социальных сетей и продолжения эволюции их API.
источник
Спасибо всем, кто пытался помочь.
Для меня этот сценарий был полезен. Он обрабатывает только плоский JSON и не заботится о типах, но автоматизирует некоторые процедуры
источник
Я знаю, что это старый вопрос, но я наткнулся на него, пытаясь найти ответ сам.
Ответ, в котором упоминается онлайн-генератор json-pojo (jsongen), хорош, но мне нужно было кое-что, что я мог бы запустить в командной строке и настроить больше.
Поэтому я написал очень хакерский скрипт ruby, чтобы взять пример файла JSON и сгенерировать из него POJO. Он имеет ряд ограничений (например, он не работает с полями, которые соответствуют зарезервированным ключевым словам Java), но этого достаточно для многих случаев.
Сгенерированный код по умолчанию помечает для использования с Джексоном, но это можно отключить с помощью переключателя.
Вы можете найти код на github: https://github.com/wotifgroup/json2pojo
источник
Насколько я знаю, такого инструмента нет. Все же.
Я подозреваю, что главная причина в том, что в отличие от XML (который имеет XML-схему, а затем такие инструменты, как 'xjc', чтобы делать то, что вы просите, между определениями XML и POJO), нет полностью функционального языка схемы. Существует схема JSON, но она очень мало поддерживает фактические определения типов (фокусируется на структурах JSON), поэтому было бы сложно создать классы Java. Но, вероятно, все еще возможно, особенно если некоторые соглашения об именах были определены и использованы для поддержки генерации.
Однако: это то, что довольно часто запрашивается (в списках рассылки проектов инструментов JSON, за которыми я следую), поэтому я думаю, что кто-то напишет такой инструмент в ближайшем будущем.
Так что я не думаю, что это плохая идея сама по себе (также: это не хорошая идея для всех вариантов использования, зависит от того, что вы хотите сделать).
источник
У меня была такая же проблема, поэтому я решил начать писать небольшой инструмент, чтобы помочь мне с этим. Я собираюсь поделиться и открыть источник.
https://github.com/BrunoAlexandreMendesMartins/CleverModels
Он поддерживает JAVA, C # и Objective-C от JSON.
Не стесняйтесь вносить свой вклад!
источник
Вы также можете попробовать библиотеку GSON. Он достаточно мощный, он может создавать JSON из коллекций, пользовательских объектов и работает также наоборот. Он выпущен под лицензией Apache License 2.0, поэтому вы можете использовать его и в коммерческих целях.
http://code.google.com/p/google-gson/
источник
Я создал проект Github Json2Java, который делает это. https://github.com/inder123/json2java
Json2Java предоставляет настройки, такие как переименование полей и создание иерархий наследования.
Я использовал инструмент для создания некоторых относительно сложных API:
API TMS Gracenote: https://github.com/inder123/gracenote-java-api
API геокодирования Карт Google: https://github.com/inder123/geocoding
источник
Добавить в пост @ japher. Если вы не особенно привязаны к JSON, стоит проверить протоколные буферы .
источник
Попробуйте мое решение
http://htmlpreview.github.io/?https://raw.githubusercontent.com/foobnix/android-universal-utils/master/json/generator.html
Результат Java Class
JSONObject get
JSONObject put
источник
Позвольте мне показать вам, как разработать инструмент. Вы можете сделать это:
Я разработал инструмент, чтобы решить эту проблему. Это хороший дизайн и быстрый. получить код из моего github .
наслаждайтесь отсюда, я развернул его на веб-сервере .
Я пытаюсь ответить на вопрос из двух лучших ответов. Одна сеть не может открыться. Одна медленнее, чем мой инструмент. Надеюсь, вам понравится мой инструмент.
источник