Хорошо, поэтому я отредактировал вопрос, потому что это было недостаточно ясно.
Изменить 2: обновлен файл JSON.
Я использую GSON в приложении для Android, и мне нужно разбирать файлы JSON, которые поступают с сервера, и немного сложны. Я не хочу, чтобы моя объектная структура была слишком тяжелой, поэтому я хотел бы упростить содержимое: , поэтому структура моего объекта не будет структурой JSON файла.
Например, если в JSON у меня есть это:
{
"object1":{
"attribute1" : "test1",
"attribute40" : "test40",
"user":{
"id":1,
"name":"foo"
}
,"example":{
"total":10,
"list":[
{
"tag":"tag1",
"name":"object name 1",
"pos":1
},
{
"tag":"tag10",
"name":"object name 10",
"pos":10
}
]
}
}
"object2":{
"attribute1":"test..."
}
}
Я не хочу сохранять свою текущую структуру объекта, объект Example
, содержащий ArrayList
и int
"total". Но я хотел бы сохранить только простую строку со значением "object name 1;object name 2;..."
.
Кроме того, я хотел бы сохранить только идентификатор пользователя, а не полный пользователь, потому что у меня уже есть полный пользователь, который хранится где-то в другом месте, с другим вызовом API сервера.
Итак, мой класс будет выглядеть примерно так:
class Foo{
int userId;
String example; //"object name 1;object name 2;..."
...
}
Поэтому я предполагаю, что мы можем добиться этого с помощью специального десериализатора, но я не нахожу, как это сделать. Я хотел бы, если возможно, свести к минимуму память, поэтому я не думаю, что наличие полного примера объекта, а затем его использование для сборки моего String example
является правильным способом.
В худшем случае, если это слишком сложно, я хотел бы иметь возможность хранить, по крайней мере, только список элементов тега, когда я разбираю объект Example: так что мне нужен настраиваемый десериализатор, чтобы избавиться от int total
.
Итак, я бы:
class Foo{
int userId;
ArrayList<Tag> example;
...
}