Java 我需要什么GSON反序列化程序?
晚上, 我以以下格式从服务器检索JSON数据: Json手册:Java 我需要什么GSON反序列化程序?,java,json,serialization,gson,deserialization,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, ren
{
_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
、Crowd
和User
,每个类每次从Json数据中获取一个字段并调用构造函数?
我不知道这是怎么一起工作的。用户
的反序列化程序需要使用/引用群组
的反序列化程序,但由于对象位于数组中,我是否需要另一个反序列化程序
我假设我需要一组相反的序列化程序,以便将类转换为正确格式的Json数据 我不确定我是否理解这个问题:如果在JSON中,
owner
只是一个包含用户名的字符串,那么如何从中创建一个完整的User
对象?您是否计划单独请求以获取剩余的用户数据?您的响应是否包含一大块包含所有书籍和用户的JSON?我认为,如果你只使用Gson将JSON树转换成一个看起来差不多相同的对象图,那么它的效果最好——序列化器和反序列化器大多会改变解析子树的细节,但无法(轻松地)从其他地方获取数据……计划是使用一个hashmap,其中包含用户
对象和用户名作为键,如果我在那里找不到它,那么我将向另一个请求获取剩余的数据。现在,我意识到这只会递归地从服务器获取越来越多的数据,直到到达死胡同,但是让我们忽略这一点。上面的问题仍然有效,只要假设我有神奇的函数,如果我需要解析只包含用户名的JSON数据,它将返回一个完整的User
对象。
public User getUser(String username) {
return users.get(username);
}