java - 使用 proguard 进行改造不会反序列化某些模型

标签 java android rest retrofit2 android-proguard

在我的代码中,尽管服务器返回了 User 模型,但该模型并未被反序列化。从我的代码 client.getPerson() 返回 Person 对象的实例,但 client.getUser() 返回一个空字符串 可能是什么问题?

我的Client类如下,

public class Client implements Serializable {

@SerializedName("address")
private String address;

@SerializedName("nhif_no")
private String nhifNo;

@SerializedName("occupation_name")
private String occupationName;

@SerializedName("person")
private Person person;

@SerializedName("kra_pin")
private String kraPin;

@SerializedName("user")
private User user;

@SerializedName("client_id")
private int clientId;

@SerializedName("sales_agent_id")
private int salesAgentId;

public void setAddress(String address){
    this.address = address;
}

public String getAddress(){
    return address;
}

public void setNhifNo(String nhifNo){
    this.nhifNo = nhifNo;
}

public String getNhifNo(){
    return nhifNo;
}

public void setOccupationName(String occupationName){
    this.occupationName = occupationName;
}

public String getOccupationName(){
    return occupationName;
}

public void setPerson(Person person){
    this.person = person;
}

public Person getPerson(){
    return person;
}

public void setKraPin(String kraPin){
    this.kraPin = kraPin;
}

public String getKraPin(){
    return kraPin;
}

public void setUser(User user){
    this.user = user;
}

public User getUser(){
    return user;
}

public void setClientId(int clientId){
    this.clientId = clientId;
}

public int getClientId(){
    return clientId;
}

public void setSalesAgentId(int salesAgentId){
    this.salesAgentId = salesAgentId;
}

public int getSalesAgentId(){
    return salesAgentId;
}
}

我的Person类如下,

public class Person implements Serializable {

@SerializedName("last_name")
private String lastName;

@SerializedName("middle_name")
private String middleName;

@SerializedName("first_name")
private String firstName;

@SerializedName("person_id")
private int personId;

public void setLastName(String lastName){
    this.lastName = lastName;
}

public String getLastName(){
    return lastName;
}

public void setMiddleName(String middleName){
    this.middleName = middleName;
}

public String getMiddleName(){
    return middleName;
}

public void setFirstName(String firstName){
    this.firstName = firstName;
}

public String getFirstName(){
    return firstName;
}

public void setPersonId(int personId){
    this.personId = personId;
}

public int getPersonId(){
    return personId;
}
}

我的User类如下,

public class User implements Serializable{

@SerializedName("role_id")
private int roleId;

@SerializedName("email")
private String email;

public void setRoleId(int roleId){
    this.roleId = roleId;
}

public int getRoleId(){
    return roleId;
}

public void setEmail(String email){
    this.email = email;
}

public String getEmail(){
    return email;
}
}

我的JSON文件如下, { “客户”: { “client_id”:128, "nhif_no": "KJNH1289", "kra_pin": "210986", “销售代理 ID”:43, "地址": "基库尤语", "occupation_name": "囚犯", “人”: { “person_id”:358, "first_name": "卡米蒂", "middle_name": "杰拉", "last_name": "巴里迪", “性别”: { “性别_id”:1, “姓名”:“男” } }, “用户”:{ “电子邮件”:“jelabaridi@gmail.com”, “角色 ID”:2 } } }

最佳答案

通过在 proguard 规则文件中添加以下行来修复此问题

-keep 类 org.myapp.mypackage.models.** { *; }

关于java - 使用 proguard 进行改造不会反序列化某些模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55865713/

相关文章:

java - Hibernate 的旧版 org.hibernate.Criteria API 已弃用

java - JAXBgenerateElementProperty代码位置

java - 在 Maven 中获取版本(次要和主要)

android - 需要Button连续多次播放.mp3声音

php - 我应该在 admin 和 api 之间重复使用 laravel 中的 Controller 吗?或者让我的管理员使用我的 API?

java - 无法将 SHA256 与来自 Java on .Net c# 的 RSA 签名进行匹配

android - 当我们扩展它时,BaseAdapter 是如何工作的?

android - 按下后退时如何不破坏当前 Activity

ruby - 如何在 Grape 中定义哈希数组?

c# - 使用 JsonProperty 将 JSON 绑定(bind)到模型属性