【问题标题】:De-serializing a JSON GET Request Response in Java在 Java 中反序列化 JSON GET 请求响应
【发布时间】:2021-06-07 02:25:10
【问题描述】:

反序列化列表中的对象

我目前有一个“管理员”实体,根据 AllAdmin() 的 GET 请求,我将返回以下响应。这在 Postman 中使用过。

获取 AllAdmin() 的响应 [POSTMAN]

[
    {
        "adminId": 1,
        "fullName": "Patrick ",
        "email": "patrick@gmail.com",
        "dob": "1669-12-12",
        "mobileNumber": "96369636",
        "password": "password123!",
        "usages": [
            {
                "id": 3,
                "datetimeUnlocked": "2021-06-07 10:12:23"
            },
            {
                "id": 4,
                "datetimeUnlocked": "2021-06-07 10:12:27"
            }
        ],
        "authorization": [
            {
                "id": 2,
                "datetimeAccepted": "2021-06-07 10:12:14"
            }
        ],
        "adminAllow": []
    },
    {
        "adminId": 2,
        "fullName": "Worker ",
        "email": "worker@gmail.com",
        "dob": "2000-12-12",
        "mobileNumber": "96399639",
        "password": "password123!",
        "usages": [],
        "authorization": [],
        "adminAllow": []
    } ]

当前代码是我的 Android 应用程序中的管理模型。

Admin.java 模型类

public class Admin {

    @SerializedName("adminId")
    private long adminID;

    @SerializedName("fullName")
    private String adminFullName;

    @SerializedName("email")
    private String adminEmail;

    @SerializedName("dob")
    private String adminDOB;

    @SerializedName("mobileNumber")
    private String adminMobileNumber;

    // Constructor
    public Admin(long adminID, String adminFullName, String adminEmail, String adminDOB, String adminMobileNumber) {
        this.adminID = adminID;
        this.adminFullName = adminFullName;
        this.adminEmail = adminEmail;
        this.adminDOB = adminDOB;
        this.adminMobileNumber = adminMobileNumber;
    }

    // Getter
    public long getAdminID() {
        return adminID;
    }

    public String getAdminFullName() {
        return adminFullName;
    }

    public String getAdminEmail() {
        return adminEmail;
    }

    public String getAdminDOB() {
        return adminDOB;
    }

    public String getAdminMobileNumber() {
        return adminMobileNumber;
    }
}

我想澄清一下我将如何反序列化 usagesauthorization 属性,以便我能够访问和操作这些数据条目?

提前感谢您的澄清!

【问题讨论】:

    标签: java android json


    【解决方案1】:

    对于usages,您应该使用List<Usage> 作为可序列化。我的假设是你正在使用改造。因此,Retrofit Gson 转换器将负责解析Usage 的数组。同样的逻辑也适用于authorization。您可以在 datetimeAccepted 案例中使用不同的密钥。

    检查此示例以获取 Usage

    public class Usage {
    
        @SerializedName("id")
        @Expose
        private Integer id;
        @SerializedName("datetimeUnlocked")
        @Expose
        private String datetimeUnlocked;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getDatetimeUnlocked() {
            return datetimeUnlocked;
        }
    
        public void setDatetimeUnlocked(String datetimeUnlocked) {
             this.datetimeUnlocked = datetimeUnlocked;
        }
    
    }
    

    您更新后的Admin 类必须如下所示

    public class Admin {
    
        @SerializedName("adminId")
        private long adminID;
    
        @SerializedName("fullName")
        private String adminFullName;
    
        @SerializedName("email")
        private String adminEmail;
    
        @SerializedName("dob")
        private String adminDOB;
    
        @SerializedName("mobileNumber")
        private String adminMobileNumber;
    
        @SerializedName("usages")
        private List<Usage> usages;
    
        // Constructor
        public Admin(long adminID, String adminFullName, String adminEmail, String adminDOB, String adminMobileNumber, List<Usage> usages) {
            this.adminID = adminID;
            this.adminFullName = adminFullName;
            this.adminEmail = adminEmail;
            this.adminDOB = adminDOB;
            this.adminMobileNumber = adminMobileNumber;
            this.usages = usages;
        }
    
        // Getter
        public long getAdminID() {
            return adminID;
        }
    
        public String getAdminFullName() {
            return adminFullName;
        }
    
        public String getAdminEmail() {
            return adminEmail;
        }
    
        public String getAdminDOB() {
            return adminDOB;
        }
    
        public String getAdminMobileNumber() {
            return adminMobileNumber;
        }
    
        public List<Usage> getUsages() {
            return usages;
        }
    }
    

    【讨论】:

    • @JeromeQuah 如果这可以帮助您解决问题。您可以将此标记为已接受的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多