使用proguard进行改造并不是对某些模型进行反序列化

问题描述 投票:0回答:1

在我的代码中,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": { "client_id": 128, "nhif_no": "KJNH1289", "kra_pin": "210986", "sales_agent_id": 43, "address": "Kikuyu", "occupation_name": "Prisoner", "person": { "person_id": 358, "first_name": "Kamiti", "middle_name": "Jela", "last_name": "Baridi", "gender": { "gender_id": 1, "name": "Male" } }, "user": { "email": "[email protected]", "role_id": 2 } } }

java android rest retrofit2 android-proguard
1个回答
0
投票

通过在proguard rules文件中添加以下行来修复它

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

© www.soinside.com 2019 - 2024. All rights reserved.