Retrofit 2.0 with GsonConverterFactory return null for fields with non-english letters in name
Retrofit 2.0 with GsonConverterFactory return null for fields with non-english letters in name
我有一些json,例如:
{
"id": 12,
"title": "Title",
"photo": [
"image.png"
],
"options": {
"Поле": "150"
}
}
我创建模型 class 用于解析:
public class Model implements Serializable {
public int id;
public String title;
public String[] photo;
@SerializedName("option")
public Options option;
public Model(int id, String title, String[] photo, Options option) {
this.id = id;
this.title = title;
this.photo = photo;
this.option = option;
}
public class Options implements Serializable {
@SerializedName("Поле")
public String pole;
public Options(String pole) {
this.pole = pole;
}
}
}
但不幸的是我的 Model.Option.pole 中有 null。
我想,问题出在编码上。我对吗?
我该如何解决这个问题?
P.S.: 在示例中 - 字段的西里尔名称
我认为问题是@SerializedName("option")
根据你的json应该是@SerializedName("options")
(注意复数形式-选项s)
注释 SerializedName
告诉 gson
它应该使用什么来序列化和反序列化 json 中的属性键。您的 json 中有 options
,但您告诉 gson
序列化和反序列化 option
。
我有一些json,例如:
{
"id": 12,
"title": "Title",
"photo": [
"image.png"
],
"options": {
"Поле": "150"
}
}
我创建模型 class 用于解析:
public class Model implements Serializable {
public int id;
public String title;
public String[] photo;
@SerializedName("option")
public Options option;
public Model(int id, String title, String[] photo, Options option) {
this.id = id;
this.title = title;
this.photo = photo;
this.option = option;
}
public class Options implements Serializable {
@SerializedName("Поле")
public String pole;
public Options(String pole) {
this.pole = pole;
}
}
}
但不幸的是我的 Model.Option.pole 中有 null。
我想,问题出在编码上。我对吗? 我该如何解决这个问题?
P.S.: 在示例中 - 字段的西里尔名称
我认为问题是@SerializedName("option")
根据你的json应该是@SerializedName("options")
(注意复数形式-选项s)
注释 SerializedName
告诉 gson
它应该使用什么来序列化和反序列化 json 中的属性键。您的 json 中有 options
,但您告诉 gson
序列化和反序列化 option
。