我需要哪些GSON反序列化器?

时间:2015-09-02 21:37:57

标签: java json serialization gson deserialization

晚上,

我以这种格式从服务器检索JSON数据:

JSON-图书:

{
    _id: String,
    isbn: String,
    owner: String username,
    rentedTo: Array[String usernames]
}

JSON-人群:

{
    _id: String,
    isbn: String,
    owner: String username,
    availableForRent: Integer, 
    rentedTo: Array[String usernames]
}

JSON-用户:

{
    username: String,
    books: Array[Book],
    crowds: Array[Crowd]
}

同样,我有三个班级:

public class Book{
    private String _id;
    private String isbn;
    private User owner;
    private ArrayList<User> rentedTo;

    public Book(String _id, String isbn, User owner, ArrayList<User> rentedTo) {
        this._id = _id;
        this.isbn = isbn;
        this.owner = owner;
        this.rentedTo = rentedTo;
    }
}

public class Crowd {
    private String _id;
    private String name;
    private User owner;
    private ArrayList<User> members;

    public Crowd(String _id, String name, User owner, ArrayList<User> members) {
        this._id = _id;
        this.name = name;
        this.owner = owner;
        this.members = members;
    }
}
public class User {
    private String name;
    private Shelf shelf;
    private ArrayList<Book> books;
    private ArrayList<Crowd> crowds;

    public User(String name, ArrayList<Book> books, ArrayList<Crowd> crowds) {
        this.name = name;
        this.booksOwned = books;
        this.crowds = crowds;
    }
}

如您所见,所有字段名称都匹配,但不是所有类型。 Json-book和Json-crowd中的密钥ownerrentedTo中的用户分别具有类型StringArrayList<String>的值,其中字符串是唯一的用户名。在类中,这些字段的类型为UserArrayList<User>。本身,这没有问题,因为我可以使用此方法从字符串中获取User对象:

    public User getUser(String username) {
        return users.get(username);
    }

现在,我为了从JSON数据中获取正确的对象而需要的反序列化器有点困惑。呃,这个外观的架构怎么样?每个类BookCrowdUser的反序列化器,每个类从Json数据中一次获取一个字段并调用构造函数? 我无法理解这将如何协同工作。 User的反序列化器需要使用/引用Crowd的反序列化器,但是由于对象在数组中,我还需要另一个反序列化器吗?

我假设我需要一组相反的序列化器,以便将类转换为正确格式的Json数据。

0 个答案:

没有答案