为什么我的改造实例无法解析特定字段?
Why is my retrofit instance failing to parse a specific field?
我们最近在我们的一个模型中添加了一个字段 p_status
/pStatus
。出于某种原因,我们的改造实例无法填充该字段。
以下是我将字段添加到模型的方式:
@SerializedName("p_status")
private String pStatus;
以下是我们设置改装实例的方式:
@Provides
@Singleton
fun provideRetrofit(client: OkHttpClient): Retrofit {
return Retrofit.Builder()
.baseUrl(Config.ENDPOINT)
.client(client)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(
GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create()))
.build()
}
出于某种原因 pStatus
总是 null
。有谁知道为什么?
编辑:
这是我尝试解析的 json 的示例(我删除了一些 confidential/proprietary 的字段)
{
"language": "en_CA",
"height_ft": 5,
"height_in": 9,
"n_message": true,
"n_reminders": false,
"n_allowed": true,
"app_version": "0.81",
"p_enabled": true,
"paused": false,
"created_at": "2018-07-20T16:59:07.000Z",
"modified_at": "2019-08-16T16:41:52.000Z",
"p_status": "pending",
...
}
这是 pStatus
的 setter 和 getter
public void setPStatus(String pStatus) {
this.pStatus = pStatus;
}
public String getPStatus() {
return pStatus;
}
这是class的模型(我删除了一堆专有的东西)
public class User implements Serializable, Cloneable, IUser {
private String id;
@SerializedName("first_name")
private String firstName;
@SerializedName("last_name")
private String lastName;
private String email;
@SerializedName("location")
private String location;
private String language;
private String gender;
private int age;
private boolean paused;
@SerializedName("height_ft")
private int heightFt;
@SerializedName("height_in")
private int heightIn;
private int heightCm;
@SerializedName("app_version")
private String appVersion;
@SerializedName("created_at")
private String createdAt;
@SerializedName("modified_at")
private String modifiedAt;
@SerializedName("deleted_at")
private String deletedAt;
@SerializedName("p_status")
private String pStatus;
public String getId() {
return id;
}
@Override
public String getName() {
return getFirstName();
}
@Override
public String getAvatar() {
return null;
}
public void setId(String id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLocation() {
return location != null ? location : "";
}
public void setLocation(String location) {
this.location = location != null ? location : "";
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean getPaused() {
return paused;
}
public void setPaused(boolean paused) {
this.paused = paused;
}
public int getHeightFt() {
return heightFt;
}
public void setHeightFt(int heightFt) {
this.heightFt = heightFt;
}
public int getHeightIn() {
return heightIn;
}
public void setHeightIn(int heightIn) {
this.heightIn = heightIn;
}
public int getHeightCm() {
return heightCm;
}
public void setHeightCm(int heightCm) {
this.heightCm = heightCm;
}
public String getAppVersion() {
return appVersion;
}
public void setAppVersion(long appVersion) {
this.appVersion = Long.toString(appVersion);
}
public String getCreatedAt() {
return createdAt;
}
public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}
public String getModifiedAt() {
return modifiedAt;
}
public void setModifiedAt(String modifiedAt) {
this.modifiedAt = modifiedAt;
}
public String getDeletedAt() {
return deletedAt;
}
public void setDeletedAt(String deletedAt) {
this.deletedAt = deletedAt;
}
}
我们从错误的端点发送 p_status。
我们最近在我们的一个模型中添加了一个字段 p_status
/pStatus
。出于某种原因,我们的改造实例无法填充该字段。
以下是我将字段添加到模型的方式:
@SerializedName("p_status")
private String pStatus;
以下是我们设置改装实例的方式:
@Provides
@Singleton
fun provideRetrofit(client: OkHttpClient): Retrofit {
return Retrofit.Builder()
.baseUrl(Config.ENDPOINT)
.client(client)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(
GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.create()))
.build()
}
出于某种原因 pStatus
总是 null
。有谁知道为什么?
编辑: 这是我尝试解析的 json 的示例(我删除了一些 confidential/proprietary 的字段)
{
"language": "en_CA",
"height_ft": 5,
"height_in": 9,
"n_message": true,
"n_reminders": false,
"n_allowed": true,
"app_version": "0.81",
"p_enabled": true,
"paused": false,
"created_at": "2018-07-20T16:59:07.000Z",
"modified_at": "2019-08-16T16:41:52.000Z",
"p_status": "pending",
...
}
这是 pStatus
public void setPStatus(String pStatus) {
this.pStatus = pStatus;
}
public String getPStatus() {
return pStatus;
}
这是class的模型(我删除了一堆专有的东西)
public class User implements Serializable, Cloneable, IUser {
private String id;
@SerializedName("first_name")
private String firstName;
@SerializedName("last_name")
private String lastName;
private String email;
@SerializedName("location")
private String location;
private String language;
private String gender;
private int age;
private boolean paused;
@SerializedName("height_ft")
private int heightFt;
@SerializedName("height_in")
private int heightIn;
private int heightCm;
@SerializedName("app_version")
private String appVersion;
@SerializedName("created_at")
private String createdAt;
@SerializedName("modified_at")
private String modifiedAt;
@SerializedName("deleted_at")
private String deletedAt;
@SerializedName("p_status")
private String pStatus;
public String getId() {
return id;
}
@Override
public String getName() {
return getFirstName();
}
@Override
public String getAvatar() {
return null;
}
public void setId(String id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getLocation() {
return location != null ? location : "";
}
public void setLocation(String location) {
this.location = location != null ? location : "";
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean getPaused() {
return paused;
}
public void setPaused(boolean paused) {
this.paused = paused;
}
public int getHeightFt() {
return heightFt;
}
public void setHeightFt(int heightFt) {
this.heightFt = heightFt;
}
public int getHeightIn() {
return heightIn;
}
public void setHeightIn(int heightIn) {
this.heightIn = heightIn;
}
public int getHeightCm() {
return heightCm;
}
public void setHeightCm(int heightCm) {
this.heightCm = heightCm;
}
public String getAppVersion() {
return appVersion;
}
public void setAppVersion(long appVersion) {
this.appVersion = Long.toString(appVersion);
}
public String getCreatedAt() {
return createdAt;
}
public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}
public String getModifiedAt() {
return modifiedAt;
}
public void setModifiedAt(String modifiedAt) {
this.modifiedAt = modifiedAt;
}
public String getDeletedAt() {
return deletedAt;
}
public void setDeletedAt(String deletedAt) {
this.deletedAt = deletedAt;
}
}
我们从错误的端点发送 p_status。