Разбор JSON Array во время выполнения и генерация классов / объектов с использованием Gson и Java - PullRequest
1 голос
/ 07 июня 2011

Предположим, у меня есть строка JSON следующего формата:

Как Я анализирую это с помощью Gson , чтобы я мог написать метод для выполнения действий, основанных на отдельных вхождениях значений и их родителей?

Вот пример строки JSON, однако фактическая строка JSON считается гораздо более сложной, состоящей из глубоко вложенных подмассивов.

Образец один:

    [{"Name":"First","Parent":"none","Elements":[{"One": 1, "Two": 2,"Parent":"none"}]},       
  {"Name":"Second","Parent":"First","Elements":"none"},
{"Name":"Third","Parent":"Second","Elements":"none"},
{"Name":"Fourth","Parent":"Eighth","Elements":[{"One": 1, "Two": 2,"Parent":"Tenth"}]},
{"Name":"Fifth","Parent":"none","Elements":[{"One": 1, "Two": 2,"Parent":"First"}]},
{"Name":"Sixth","Parent":"Fourth","Elements":[{"One": 1, "Two": 2,"Parent":"First"}]}, 
{"Name":"Seventh","Parent":"Sixth","Elements":[{"One": 1, "Two": 2,"Parent":"Ninth"}]},
{"Name":"Eighth","Parent":"Seventh","Elements":[{"One": 1, "Two": 2,"Parent":"Tenth"}]},
{"Name":"Ninth","Parent":"Fourth","Elements":[{"One": 1, "Two": 2,"Parent":"Eighth"}]},
{"Name":"Tenth","Parent":"Third","Elements":[{"One": 1, "Two": 2,"Parent":"Second"}]},
{"Name":"Eleventh","Parent":"First","Elements":[{"One": 1, "Two": 2,"Parent":"First"}]}]

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Возможно, не найден ответ:

Gson в настоящее время не имеет встроенного механизма для обработки двунаправленных ссылок во время сериализации или десериализации (за исключением того, что для полей сериализации у детей ссылки на родителей могут быть выборочно исключены *, в результате чего в результирующем JSON отсутствуют родительские справочные данные в дочерняя или пользовательская обработка сериализации может заменить родительскую ссылку новым элементом JSON, а для десериализации можно реализовать пользовательскую обработку в соответствии с описанием MJ).

Джексон делает.

* Механизм исключения поля из сериализации заключается в том, чтобы фактически указать, что все остальные поля должны быть включены. Подробнее см. в документации @Expose .

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

Для этого вида JSON String после преобразования на определенный уровень необходимо вручную установить родительский объект в объектах. Преобразование JSON может помочь вам с более простым уровнем иерархии, таким как HAS-A и IS-A, но использование собственной иерархии немного сложно.

...