使用JSON解析列表后,对象为空

时间:2016-08-21 14:04:47

标签: java json gson

我目前正在尝试使用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正确地填充了团队?

提前致谢, 斯维尔

1 个答案:

答案 0 :(得分:0)

问题解决了,变量名中的大写是错误的,例如gClassSname变量为gClassSName,但应为gClassSname 我花了两个小时才意识到这很简单......