我正在尝试使用 GSON 将一些 JSON 解析为 Java 对象。我的 json 在这里:http://ec2-50-112-212-186.us-west-2.compute.amazonaws.com/ske.json
下面是我的 Java bean。我在 JsonGen 的帮助下创建了它:
package ske.entities;
import java.util.List;
public class WordSketch{
private List<Gramrels> gramrels;
private String corp_full_name;
public String getCorp_full_name() {
return corp_full_name;
}
public void setCorp_full_name(String corp_full_name) {
this.corp_full_name = corp_full_name;
}
public List<Gramrels> getGramrels(){
return this.gramrels;
}
public void setGramrels(List<Gramrels> gramrels){
this.gramrels = gramrels;
}
public static class Gramrels {
private List<Words> words;
private Number count;
private String name;
private Number score;
private Number seek;
public List<Words> getWords(){
return this.words;
}
public void setWords(List<Words> words){
this.words = words;
}
public Number getCount(){
return this.count;
}
public void setCount(Number count){
this.count = count;
}
public String getName(){
return this.name;
}
public void setName(String name){
this.name = name;
}
public Number getScore(){
return this.score;
}
public void setScore(Number score){
this.score = score;
}
public Number getSeek(){
return this.seek;
}
public void setSeek(Number seek){
this.seek = seek;
}
}
public static class Words {
private Number count;
private Number id;
private String lempos;
private Number score;
private Number seek;
private String word;
public Number getCount(){
return this.count;
}
public void setCount(Number count){
this.count = count;
}
public Number getId(){
return this.id;
}
public void setId(Number id){
this.id = id;
}
public String getLempos(){
return this.lempos;
}
public void setLempos(String lempos){
this.lempos = lempos;
}
public Number getScore(){
return this.score;
}
public void setScore(Number score){
this.score = score;
}
public Number getSeek(){
return this.seek;
}
public void setSeek(Number seek){
this.seek = seek;
}
public String getWord(){
return this.word;
}
public void setWord(String word){
this.word = word;
}
}
}
但是,当我调用 WordSketch gramrels = gson.fromJson(new InputStreamReader(response.getEntity().getContent()), WordSketch.class);
时,corp_full_name
已填充,但 gramrels 为空。我究竟做错了什么?
这是我第一次使用 Json,所以我对它还很陌生。
谢谢
最佳答案
我认为你的问题只是字段的名称。
在您的类中,名称为“gramrels”,但在您的 JSON 响应中,名称为“Gramrels”(大写)。程序中的变量名称和 JSON 中的变量名称必须相同,因为 GSON 允许您仅从 JSON 响应中获取您感兴趣的那些字段...因此,如果它在响应中找到 JSON 值,则不会与您的任何类属性都不对应,GSON 只是忽略该值。
我建议你使用注解@SerializedName
,这样:
@SerializedName("Gramrels")
private List<Gramrels> gramrels;
通过这种方式,您可以按照 Java 命名约定将属性名称保留为小写,但您要告诉 GSON JSON 响应中此参数的名称将对应于“Gramrels”...
您也可以对其他变量执行相同的操作,例如:
@SerializedName("corp_full_name")
private String corpFullName;
因为corp_full_name
不遵循Java命名约定...
关于json - 将 JSON 解析为 Java bean - 列表剩余为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15937047/