晚上,
我以这种格式从服务器检索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中的密钥owner
和rentedTo
中的用户分别具有类型String
和ArrayList<String>
的值,其中字符串是唯一的用户名。在类中,这些字段的类型为User
和ArrayList<User>
。本身,这没有问题,因为我可以使用此方法从字符串中获取User对象:
public User getUser(String username) {
return users.get(username);
}
现在,我为了从JSON数据中获取正确的对象而需要的反序列化器有点困惑。呃,这个外观的架构怎么样?每个类Book
,Crowd
和User
的反序列化器,每个类从Json数据中一次获取一个字段并调用构造函数?
我无法理解这将如何协同工作。 User
的反序列化器需要使用/引用Crowd
的反序列化器,但是由于对象在数组中,我还需要另一个反序列化器吗?
我假设我需要一组相反的序列化器,以便将类转换为正确格式的Json数据。