Java 通过GSON进行的JSON解析返回空值
我试图读取JSON输出的值 这是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
{"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谢谢大家的评论。我增加了召唤师类。编辑:控制台中没有抛出异常,只有没有值的属性。