Gson - условная десериализация JSON (Sanity Checks) - PullRequest
1 голос
/ 15 мая 2011

У меня есть код в моем проекте Android, который правильно десериализует json в POJO с использованием gson. Я хочу добавить некоторые условные приемочные проверки (проверки работоспособности) к входящему json. Например, с приведенной ниже структурой данных я хочу, чтобы парсер gson добавлял только те объекты, у которых дата начала <дата окончания. Я знаю, что мог бы перебрать список после его заполнения, чтобы удалить недействительные элементы, но мне было интересно, есть ли способ отклонить элементы на лету. Любая помощь будет оценена. </p>

Пример JSON

{
  "Items" : [
     {
        "Name" : "Example Name",
        "Start" : "2010-10-16 10:00:00",
        "End" : "2011-03-20 17:00:00",
        <other fields>
    }, 
    <several more items>
  ]
}

ItemList.java

public class ItemList {
    private List<ItemHeader> Items;

    public void setItemHeaders(List<ItemHeader> headers) {
        Items = headers;
    }

    public List<ItemHeader> getItemHeaders() {
        return Items;
    }
}

ItemHeader.java имеет поля для имени, начала, конца и всех других полей.

1 Ответ

2 голосов
/ 16 мая 2011

Вам нужно написать свой собственный десериализатор и вызвать его исключение, если ваше условие не выполнено.

http://sites.google.com/site/gson/gson-user-guide#TOC-Writing-a-Deserializer

Я не знаю, что вы должны сделать это, но это возможно.

...