Удаление сериализации ответа на запрос JSON GET в Java

#java #android #json

Вопрос:

Удаление сериализации объектов в списке

В настоящее время у меня есть объект «Администратор», в котором по запросу GET AllAdmin() вернет мне следующий ответ. Это использовалось в «Почтальоне».

ПОЛУЧИТЬ ответ для AllAdmin() [ПОЧТАЛЬОН]

 [
    {
        "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;
    }
}
 

Я хотел бы уточнить, каким образом я бы снял сериализацию свойств использования и авторизации, чтобы я мог получать доступ к записям данных и управлять ими?

Заранее благодарю вас за разъяснения!

Ответ №1:

Для usages этого вы должны использовать a List<Usage> в качестве сериализуемого. Я предполагаю, что вы используете модернизацию. Таким образом, модифицированный конвертер 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;
    }
}
 

Комментарии:

1. @JeromeQuah, если это помогло вам решить проблему. Вы можете отметить это как принятый ответ