通过GSON进行JSON解析会返回空值

时间:2015-01-24 17:31:55

标签: java json

我正在尝试读取JSON输出的值。

这是JSON输出:

{"nameOfSummoner":{"id":56529189,"name":"test","profileIconId":550,"summonerLevel":30,"revisionDate":1422110739000}}

使用以下代码我试图阅读它:

    final Connector connector = new Connector();
    String response = connector.connect("link"); // (Returns a String value of the JSON)

    final Gson gson = new Gson();
    final Summoner summoner = gson.fromJson(response, Summoner.class); //Summoner is a model class
    System.out.println(summoner);

召唤师类:

public class Summoner {

private String name;
private long profileIconId;
private long summonerLevel;
private long revisionDate;

public String getName() {
    return name;
}

public void setName(final String name) {
    this.name = name;
}

public long getProfileIconId() {
    return profileIconId;
}

public void setProfileIconId(final long profileIconId) {
    this.profileIconId = profileIconId;
}

public long getSummonerLevel() {
    return summonerLevel;
}

public void setSummonerLevel(final long summonerLevel) {
    this.summonerLevel = summonerLevel;
}

public long getRevisionDate() {
    return revisionDate;
}

public void setRevisionDate
        (long revisionDate) {
    this.revisionDate = revisionDate;
}

@Override
public String toString() {
    return "Summoner{" +
            "name='" + name + '\'' +
            ", profileIconId=" + profileIconId +
            ", summonerLevel=" + summonerLevel +
            ", revisionDate=" + revisionDate +
            '}';
}

}

我在控制台上得到以下输出:

Summoner{name='null', profileIconId=0, summonerLevel=0, revisionDate=0}

我遗憾地不知道为什么会这样。我得到的任何帮助表示赞赏。我很确定它与JSON输出有关," nameOfSummoner"是最重要的,也许这就是为什么它没有阅读下面的内容。

1 个答案:

答案 0 :(得分:1)

如@PeterMmm所述,您的输入是具有1个键值对的地图。

您需要使用Summoner对象创建另一个POJO作为属性:

public class Sample {

private Summoner nameOfSummoner;

//getters and setters

}

然后尝试解析。或者,您可以创建一个Map并进行解析。

Map<String, Summoner> responseObj = new HashMap<String, Summoner>();

responseObj= gson.fromJson(response, responseObj.class);

Summoner obj = responseObj.get("nameOfSummoner");

您还需要拥有&#34; id&#34;我相信Summoner类中的属性,否则gson会抛出异常。