我目前正在尝试使用GSON解析一些JSON数据:
[{
"lvTypePathStr": "teamList",
"lvIDPathStr": "155213",
"lvTypeLabelStr": "\/ HSG Pinnau",
"dataList": [{
"lvTypeNext": "",
"lvIDNext": 0,
"levelTypeLabel": "",
"teamID": "353197",
"gClassID": "22566",
"gClassSname": "M-HL",
"clubSname": "HSG Pinnau",
"clubLname": "HSG Pinnau",
"teamSname": "HSG Pinnau"
}, {
"lvTypeNext": "",
"lvIDNext": 0,
"levelTypeLabel": "",
"teamID": "353226",
"gClassID": "22569",
"gClassSname": "M-BL-1",
"clubSname": "HSG Pinnau",
"clubLname": "HSG Pinnau",
"teamSname": "HSG Pinnau 2"
}],
"errCode": 0
}]
相应的对象是:
包含所有团队的列表:
public class JSONTeamList extends JSONResponse {
private List<JSONTeam> dataList = new ArrayList<JSONTeam>();
public List<JSONTeam> getDataList() {
return dataList;
}
public void setDataList(List<JSONTeam> dataList) {
this.dataList = dataList;
}
仅针对常见属性从JSONResponse接收:
public class JSONResponse {
protected String lvTypePathStr;
protected String lvIDPathStr;
protected String lvTypeLabelStr;
protected int errorCode;
/** ... getter and setter for all attributes ... */
}
最后是团队本身:
public class JSONTeam {
private String lvTypeNext;
private int lvIDNext;
private String levelTypeLabel;
private String teamID;
private String gClassID;
private String gClassSName;
private String clubSName;
private String clubLName;
private String teamSName;
/** Getter and setter for all attributes... */
}
为了更好的可读性,我省略了getter和setter,但它们是使用IntelliJ以get {variable}形式自动生成的,并像往常一样设置{variable}。
解析代码是:
URL url = new URL(baseURL + clubId);
URLConnection con = url.openConnection();
Reader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
JSONTeamList[] list = gson.fromJson(in, JSONTeamList[].class);
现在,当我解析JSON时,我得到一个Teamlist,其中包含团队,但团队中的所有属性都是空的。 我遇到了this个问题,但我认为它不符合这种情况,因为这是一个嵌套列表。 我错过了什么让GSON正确地填充了团队?
提前致谢, 斯维尔
答案 0 :(得分:0)
问题解决了,变量名中的大写是错误的,例如gClassSname
变量为gClassSName
,但应为gClassSname
我花了两个小时才意识到这很简单......