сериализация / десериализация объектов JSON с помощью Google GSON - PullRequest
0 голосов
/ 25 декабря 2010

Я хочу сериализовать / десериализовать Java-объекты в / из json.Google GSON является предпочтительным.Пусть у меня есть класс A:

class A {
  int x = 1;
  int y = 2; 
}

Затем, если я вызову new Gson (). ToJson (new A ()), я получу следующее:

{ x: 1, y : 2}. 

Однако я хочуиметь

{class : "A", x:1, y:2}

Так что я могу десериализовать его, используя отражение, не зная имени класса во время компиляции.Как я могу это сделать?Спасибо.

Ответы [ 2 ]

0 голосов
/ 16 июня 2011

Если использование Gson является предпочтительным или обязательным, то для конкретного вопроса о том, как сгенерировать JSON структуры {class:"A", x:1, y:2} из экземпляра Java структуры class A {int x = 1; int y = 2;}, в настоящее время необходимо реализовать пользовательскую сериализацию.Точно так же, чтобы десериализовать этот JSON в эту структуру Java, необходимо реализовать пользовательскую десериализацию.

Вместо такой «ручной» обработки, обратите внимание, что Gson вскоре будет иметь RuntimeTypeAdapter для более простой полиморфной десериализации.См. http://code.google.com/p/google-gson/issues/detail?id=231 для получения дополнительной информации.Даже если вы не можете использовать RuntimeTypeAdapter, он как минимум предоставляет пример для создания настраиваемого настраиваемого десериализатора.

Если вы можете переключать API отображения JSON, тогда я рекомендую рассмотреть Джексон , так каку него есть работающий и относительно простой механизм полиморфного десериализатора.Я опубликовал несколько простых примеров на http://programmerbruce.blogspot.com/2011/05/deserialize-json-with-jackson-into.html.

0 голосов
/ 25 декабря 2010

Ваш второй пример не JSON. Если вы хотите что-то, что поддерживает состояние экземпляра и определенные классы и т.д., посмотрите YAML

http://www.yaml.org/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...