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

Java 通过GSON进行的JSON解析返回空值,java,json,Java,Json,我试图读取JSON输出的值 这是JSON输出: {"nameOfSummoner":{"id":56529189,"name":"test","profileIconId":550,"summonerLevel":30,"revisionDate":1422110739000}} 我试图通过以下代码来阅读它: final Connector connector = new Connector(); String response = connector.connect("lin

我试图读取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”位于顶部,这可能就是为什么它没有阅读下面的内容。

正如@petermm所提到的,您的输入是一个带有1个键值对的映射

您需要创建另一个属性为召唤器对象的POJO:

public class Sample {

private Summoner nameOfSummoner;

//getters and setters

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

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

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

Summoner obj = responseObj.get("nameOfSummoner");
Map responseObj=newhashmap();
responseObj=gson.fromJson(response,responseObj.class);
召唤者对象=响应对象获取(“总结者名称”);

我相信召唤师类中还需要有“id”属性,否则gson会抛出一个异常。

你能同时提供召唤师类的内容吗?Gson希望精确的模型能够解析JSONC,你也可以发布
召唤者
类。你的输入是一个带有1个键/值对的映射。键是“nameOfSummoner”,该值似乎是一个
召唤者
。您是否捕获或忽略了任何异常?检查响应的值可能为空dur哪个对象具有其默认值all it’s Variable谢谢大家的评论。我增加了召唤师类。编辑:控制台中没有抛出异常,只有没有值的属性。