У меня есть JSON, который является либо единственным объектом, либо массивом одного и того же объекта. Есть ли способ проанализировать эти данные с помощью Gson, где он будет отличать один объект от массива?
Единственное решение, которое я имею в настоящее время для этого, - это вручную разобрать json и surround с помощью try catch. Сначала я попробую разобрать его как один объект, если он не удастся, он вызовет исключение, а затем попытаюсь проанализировать его как массив.
Я не хочу анализировать его вручную, хотя... это займет меня навсегда. Вот идея о том, что происходит.
public class ObjectA implements Serializable{
public String variable;
public ObjectB[] objectb; //or ObjectB objectb;
public ObjectA (){}
}
Здесь объект, который может быть либо массивом, либо единственным объектом.
public class ObjectB implements Serializable{
public String variable1;
public String variable2;
public ObjectB (){}
}
И затем при взаимодействии с json-ответом. Я делаю это.
Gson gson = new Gson();
ObjectA[] objectList = gson.fromJson(response, ObjectA[].class);
Когда массив ObjectA сериализуется, json содержит либо массив, либо отдельный объект для ObjectB.
[
{
"variable": "blah blah",
"objectb": {
"variable1": "1",
"variable2": "2"
}
},
{
"variable": "blah blah",
"objectb": {
"variable1": "1",
"variable2": "2"
}
},
{
"variable": "blah blah",
"objectb": [
{
"variable1": "1",
"variable2": "2"
},
{
"variable1": "1",
"variable2": "2"
}
]
}
]