我正在尝试读取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"是最重要的,也许这就是为什么它没有阅读下面的内容。
答案 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会抛出异常。