我尝试使用this指南后的改进2.0解析JSON对象,但它不起作用。我认为这是因为JSON格式存在差异。
这是一个嵌套的JSON对象,格式为:
{
"SearchService": {
"list_total_count": 531,
"RESULT": {
"CODE": "INFO-001",
"MESSAGE": "SUCCESS"
},
"row": [{
"ID": "1983",
"NAME": "SAN",
"NUM": "38",
}, {
"ID": "1984",
"NAME": "DU",
"NUM": "27",
}]
}
}
以下是使用SerializedName的类代码:
RowList.java
public class RowList {
@SerializedName("row")
@Expose
private ArrayList<Row> rows= new ArrayList<>();
public ArrayList<Row> getRows() {
return rows;
}
public void setRows(ArrayList<Row> rows) {
this.rows= rows;
}
}
Row.java
public class Row{
@SerializedName("ID")
@Expose
private String id;
@SerializedName("NAME")
@Expose
private String name;
@SerializedName("NUM")
@Expose
private String num;
/*getter setter*/
}
答案 0 :(得分:1)
阅读该指南。
创建Model类有两种方法。第一种方法是手动方法,它要求您学习如何使用Gson库。第二种方法是您也可以通过捕获JSON输出并使用jsonschema2pojo
自动生成所需的Java类。
看起来你已经尝试接近一个,但还没有(但是?)尝试阅读Gson文档。
好的,你有?:
。这涵盖了Row
内的对象,因此您还需要以下对象:
"row": [...]
"SearchService": {}
我不认为"RESULT": {}
类是必要的。 RowList
没问题。
例如,
List<Row>
(删除class Result {
@SerializedName("CODE")
String code;
@SerializedName("MESSAGE")
String message;
}
class SearchService {
@SerializedName("list_total_count")
long count;
@SerializedName("RESULT")
Result result;
@SerializedName("row")
private ArrayList<Row> rows= new ArrayList<>();
}
以获得简洁)
然后,Retrofit会使用@Expose