Android:将 json 值映射到 pojo
Posted
技术标签:
【中文标题】Android:将 json 值映射到 pojo【英文标题】:Android:Mapping json values to pojo 【发布时间】:2017-03-31 18:34:18 【问题描述】:我正在尝试使用 GSON
将 JSON
值映射到 POJO。当我尝试从 JSON
字符串中取回对象时,所有变量都设置为 null。
这是我的代码
Pojo.java
public class PatientSymptoms
private Integer AnalSymptomsMapId;
private Integer SymptomId;
private String Symptom;
private Boolean IsRemoved;
private Boolean IsSynced;
private Boolean IsSentToPatient;
//Getters and Setters
映射代码
JSONObject jsonObject = (JSONObject) jsonArray.get(i);
PatientSymptoms symptoms = new PatientSymptoms();
Gson gson = new Gson();
String x = gson.toJson(jsonObject);
symptoms = gson.fromJson(x,PatientSymptoms.class);
但PatientSymptoms
对象值始终为空。这是调试器的屏幕截图
更新 JSON响应
"Success": true,
"StatusCode": 0,
"StatusMessage": "",
"Data": [
"AnalSymptomsMapId": 250,
"SymptomId": 95,
"Symptom": "asdf",
"IsRemoved": false,
"IsSynced": false,
"IsSentToPatient": true
]
【问题讨论】:
实现 Parcelable。 请发布您的 json 回复已更新 【参考方案1】:你能给我们举个 Json 的例子吗? (像一个字符串)
(JSONObject) jsonArray.get(i).toString()
无论如何,我建议您使用 Gson 的 @SerializedName 注释来进行映射:
https://google.github.io/gson/apidocs/com/google/gson/annotations/SerializedName.html
【讨论】:
是的,就是这个 String x = gson.toJson(jsonObject);替换为 String x = jsonObject.toString();它奏效了。谢谢..【参考方案2】:让你的 Pojo.java 为
public class PatientSymptoms
private int AnalSymptomsMapId;
private int SymptomId;
private String Symptom;
private boolean IsRemoved;
private boolean IsSynced;
private boolean IsSentToPatient;
//Getters and Setters
因此,默认值将是原始类型的值。
【讨论】:
【参考方案3】:我推荐你试试Ion library by Koush
型号
public class PatientSymptoms
private int AnalSymptomsMapId;
private int SymptomId;
private String Symptom;
private boolean IsRemoved;
private boolean IsSynced;
private boolean IsSentToPatient;
//Getters and Setters
用法
Ion.with(context)
.load("http://example.com/api/patient")
.as(new TypeToken<List<PatientSymptoms>>())
.setCallback(new FutureCallback<List<PatientSymptoms>>()
@Override
public void onCompleted(Exception e, List<PatientSymptoms> symptoms)
// Use the list of Patient Symtoms
);
注意:您唯一需要记住的是 JSON 键应与 POJO 或 MODEL 中的变量名称匹配。
【讨论】:
【参考方案4】:我建议使用 this 制作您的模型
-
选择来源类型:
JSON
。
注解风格:Gson
.
单击预览。
那么你已经为你的JSON
生成了一个模型类。
别忘了实现Parcelable
。
【讨论】:
这么简短的回答,请评论!! 不幸的是,我必须有 50 声望才能评论@AndiGeeky 哦,你可以从那个链接复制一些内容,然后让答案更具描述性! 你需要通过提问来赢得声誉。 @Malik Abu Qaoud:随时!!以上是关于Android:将 json 值映射到 pojo的主要内容,如果未能解决你的问题,请参考以下文章
带有 rest-plugin 的 Struts2:将 JSON 值映射到 ENUM