Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要什么GSON反序列化程序?_Java_Json_Serialization_Gson_Deserialization - Fatal编程技术网

Java 我需要什么GSON反序列化程序?

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

晚上,

我以以下格式从服务器检索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
Crowd
User
,每个类每次从Json数据中获取一个字段并调用构造函数? 我不知道这是怎么一起工作的。
用户
的反序列化程序需要使用/引用
群组
的反序列化程序,但由于对象位于数组中,我是否需要另一个反序列化程序


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

我不确定我是否理解这个问题:如果在JSON中,
owner
只是一个包含用户名的字符串,那么如何从中创建一个完整的
User
对象?您是否计划单独请求以获取剩余的用户数据?您的响应是否包含一大块包含所有书籍和用户的JSON?我认为,如果你只使用Gson将JSON树转换成一个看起来差不多相同的对象图,那么它的效果最好——序列化器和反序列化器大多会改变解析子树的细节,但无法(轻松地)从其他地方获取数据……计划是使用一个hashmap,其中包含
用户
对象和用户名作为键,如果我在那里找不到它,那么我将向另一个请求获取剩余的数据。现在,我意识到这只会递归地从服务器获取越来越多的数据,直到到达死胡同,但是让我们忽略这一点。上面的问题仍然有效,只要假设我有神奇的函数,如果我需要解析只包含用户名的JSON数据,它将返回一个完整的
User
对象。
    public User getUser(String username) {
        return users.get(username);
    }