2010-08-20 2 views
2

Кто-нибудь знает, есть ли возможность генерировать объекты для данных JSON? Я знаю, что существуют общие библиотеки объектов JSON, но я ищу более конкретные - аналогично тому, как jaxb может преобразовывать определения SOAP или XSD в объектную модель. Я знаю, что должен быть какой-то файл определения JSON (который я не знаю, существует ли эта концепция даже в JSON), но я чувствую, что это будет намного более выгодно. Подумайте:JSON для объектов в java?

Общий случай:

genericJsonObect.get("name"); 

Особый случай:

specificJsonObject.getName(); 

ответ

1

Я думаю, что картограф Jackson данные могут делать то, что вам нужно. Он может сериализовать/десериализовать реальный объект Java в дерево Json.

Но другие API также должны работать:

  • Sojo
  • FlexJSON
  • Gson
3

Джексон и XStream имеют возможность отображения на POJOs JSON.

+0

Я бы порекомендовал Jackson –

3

Вы хотите, чтобы исходный файл .java был сгенерирован для вас? Или сопоставить выход из java beans в объекты JSON?

Если первое, то нет такой библиотеки (о которой я знаю), если более поздняя, ​​Google GSON - это именно то, что вам нужно.

Из образцов:

class BagOfPrimitives { 
    public int value1 = 1; 
    private String value2 = "abc"; 
    private transient int value3 = 3; 
    BagOfPrimitives() { 
    // no-args constructor 
    } 
} 

(Сериализация)

BagOfPrimitives obj = new BagOfPrimitives(); 
Gson gson = new Gson(); 
String json = gson.toJson(obj); 
System.out.println(json); 

Отпечатки

{"value1":1,"value2":"abc"} 

(десериализации)

BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class); 
System.out.println(obj2.value1) ; // value1 is 1 
+1

Я надеялся, что существует способ генерации классов java pojo, основанных на определенном определении. – wuntee

+0

Это не очень сложно сделать. На самом деле это был бы хороший кандидат на небольшой проект с открытым исходным кодом :) – OscarRyz

0

Я не знаком с таким проектом генерации кода, хотя я уверен, что многие проекты библиотеки Java JSON будут заинтересованы в том, чтобы иметь такую ​​вещь. Основная проблема заключается в том, что для JSON существует хороший язык схемы, позволяющий генерировать код; JSON Schema работает только для проверки.

Однако: одна возможность, которую вы могли бы рассмотреть, - просто использовать JAXB для генерации боба, а затем использовать Jackson, чтобы использовать эти компоненты. Он поддерживает аннотации JAXB, чтобы вы могли работать с JSON и сгенерированными бобами.

Смежные вопросы