Обратите внимание, что некоторые могут предложить добавить класс модели в proguard -keep, я подчеркиваю, что я не хочу этого делать из-за рекомендаций по ограничению безопасности, наложенных моим работодателем, я ищу решение, не требующее редактирования правил proguard
Используя Gson для разбора строки в формате Json в массив, сопоставленный с Pojo, все отлично работает в варианте отладки
но когда в выпуске сборки с включенным proguard свойства сопоставленных объектов Pojo возвращают ноль, вызывая сбой приложения, ниже приведен класс model / pojo:
package com.xx.xxxxxxx
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
public class BeneficiaryModel implements Serializable {
@SerializedName("beneficiaryId")
@Expose
private String beneficiaryId;
@SerializedName("beneficiaryName")
@Expose
private String beneficiaryName;
@SerializedName("beneficiaryType")
@Expose
private String beneficiaryType;
@SerializedName("status")
@Expose
private String status;
public String getBeneficiaryId() {
return beneficiaryId;
}
public void setBeneficiaryId(String beneficiaryId) {
this.beneficiaryId = beneficiaryId;
}
public String getBeneficiaryName() {
return beneficiaryName;
}
public void setBeneficiaryName(String beneficiaryName) {
this.beneficiaryName = beneficiaryName;
}
public String getBeneficiaryType() {
return beneficiaryType;
}
public void setBeneficiaryType(String beneficiaryType) {
this.beneficiaryType = beneficiaryType;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
и вот как я сериализую строку json в массив объектов
Gson gson = new Gson();
clientes = gson.fromJson(beneficiaryStringJsonArray, BeneficiaryModel[].class);
models = new ArrayList<BeneficiaryModel>(Arrays.asList(clientes));
Log.e("TAG", models.get(0).getBeneficiaryId() + "," + models.get(0).getBeneficiaryName());
// Log returns null , null
Вот часть ответа строки Json, которую необходимо сериализовать:
[{"beneficiaryId":"XYZ54646464646","beneficiaryName":"xxxxxxxxxxxxxx1","beneficiaryType":"","status":"ACTIVE"},{"beneficiaryId":"XYZ5468524654","beneficiaryName":"xxxxxxxxxxxxx2","beneficiaryType":"","status":"ACTIVE"}]
(как я уже говорил, все отлично работает в режиме отладки)