Я получаю JSON, который имеет следующую структуру:Gson десериализации с изменением типов полей
{"field1": "string",
"field2": false,
"a": {
"b": {
"listString": []
},
"c": {
"listString": [],
"s": "string"
},
"parent": {
"childA": {
"listString": ["string", "string"]
},
"s": "string"
},
"parent2": {
"listString": ["string", "string"],
"s": "string"
}
},
"field3": ["s", "s"]
}
Я столкнулся проблемы с parent
(и parent2
), так как формат этих полей может измениться. Хотя формат сложных объектов b
и c
остается неизменным. Например, я могу получить parent
(то же справедливо и для parent2
) таким образом:
{"parent": {
"childA":{
"listString": ["ssssa", "a"]
},
"s": "string"
}}
или
{"parent": {
"listString": ["ssssa", "a"],
"s": "string"
}}
Кроме того, childA
поле (если он существует) может иметь разные названия, это может быть childB
или childC
Я создал классы Java для сложных объектов:
public class MyPojo{
private String[] field1;
private String field2;
private A a;
private String field3;...}
public class A{
private B b;
private C c;
private Parent parent;
private Parent2 parent2;..}
public class Parent{
private String s;
private ChildA childA;...}...
Как можно десериализовать что-то подобное с Gson, если объекты parent
и parent2
имеют разные формы?
есть ребенокA, ребенокB и childC - единственные возможности? или это может быть что угодно с префиксом ребенка *? например childXX? – gybandi
Чтобы быть более точным, childA, childB и childC (если существуют) должны быть AND, OR, NOT. И это единственные имена элементов, которые могут возникнуть. – choka