Android 为什么我的改造实例无法解析特定字段?
我们最近在一个模型中添加了一个字段Android 为什么我的改造实例无法解析特定字段?,android,retrofit2,Android,Retrofit2,我们最近在一个模型中添加了一个字段p_status/pStatus。出于某种原因,我们的改造实例无法填充该字段 下面是我如何将字段添加到模型中的: @SerializedName(“p_状态”) 私有字符串状态; 下面是我们如何设置改装实例的: @Provides @Singleton fun provideRetrofit(client: OkHttpClient): Retrofit { return Retrofit.Builder()
p_status
/pStatus
。出于某种原因,我们的改造实例无法填充该字段
下面是我如何将字段添加到模型中的:
@SerializedName(“p_状态”)
私有字符串状态;
下面是我们如何设置改装实例的:
@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示例(我删除了一些机密/专有字段)
这是pStatus
public void设置状态(字符串状态){
this.pStatus=pStatus;
}
公共字符串getPStatus(){
返回pStatus;
}
这是这个类的模型(我删除了一堆专有的东西)
公共类用户实现可序列化、可克隆、IUser{
私有字符串id;
@SerializedName(“名字”)
私有字符串名;
@SerializedName(“姓氏”)
私有字符串lastName;
私人字符串电子邮件;
@序列化名称(“位置”)
私有字符串位置;
私有字符串语言;
私人字符串性别;
私人互联网;
私有布尔运算暂停;
@序列化名称(“高度/英尺”)
私人内部高度;
@序列化名称(“高度单位”)
海顿私人酒店;
私人内部高度cm;
@SerializedName(“应用程序版本”)
私有字符串appVersion;
@SerializedName(“创建于”)
私有字符串createdAt;
@SerializedName(“已修改”)
私有字符串modifiedAt;
@SerializedName(“已删除”)
私有字符串deletedAt;
@序列化名称(“p_状态”)
私有字符串状态;
公共字符串getId(){
返回id;
}
@凌驾
公共字符串getName(){
返回getFirstName();
}
@凌驾
公共字符串getAvatar(){
返回null;
}
公共无效集合id(字符串id){
this.id=id;
}
公共字符串getFirstName(){
返回名字;
}
public void setFirstName(字符串firstName){
this.firstName=firstName;
}
公共字符串getLastName(){
返回姓氏;
}
public void setLastName(字符串lastName){
this.lastName=lastName;
}
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
公共字符串getLocation(){
返回位置!=空?位置:“”;
}
公共void集合位置(字符串位置){
this.location=location!=null?位置:“”;
}
公共字符串getLanguage(){
返回语言;
}
公共语言(字符串语言){
这种语言=语言;
}
公共字符串getGender(){
返回性别;
}
公共无效设置性别(字符串性别){
这个。性别=性别;
}
公共整数getAge(){
回归年龄;
}
公共无效设置(整数){
这个。年龄=年龄;
}
公共布尔getPaused(){
返回暂停;
}
public void setPaused(布尔值已暂停){
this.paused=暂停;
}
public int getHeightFt(){
返回高度;
}
公共空间设置高度英尺(内部高度英尺){
this.heightFt=heightFt;
}
public int getHeightIn(){
返回高度;
}
公共空间设置高度(内部高度){
this.heightIn=heightIn;
}
public int getHeightCm(){
返回高度cm;
}
公共空间设置高度cm(内部高度cm){
this.heightCm=heightCm;
}
公共字符串getAppVersion(){
返回appVersion;
}
公共无效setAppVersion(长appVersion){
this.appVersion=Long.toString(appVersion);
}
公共字符串getCreatedAt(){
返回createdAt;
}
公共void setCreatedAt(字符串createdAt){
this.createdAt=createdAt;
}
公共字符串getModifiedAt(){
返回修改数据;
}
公共void setModifiedAt(字符串modifiedAt){
this.modifiedAt=modifiedAt;
}
公共字符串getDeletedAt(){
返回deletedAt;
}
公共void setDeletedAt(字符串deletedAt){
this.deletedAt=deletedAt;
}
}
我们从错误的端点发送了p_状态。您有正在解析的json示例吗?请提供您的json数据。确保序列化名称与json密钥匹配,并且pStatus具有公共setter方法这是唯一具有@SerializedName
的字段吗?仅供参考,此注释将覆盖您的FieldNamingPolicy
尝试更改名称,并查看其是否有效。可能是由于pS vs pS,无法将p_状态映射到getPStatus
{
"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",
...
}