2

我正在尝试使用 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_namegramrels

这是我第一次使用 Json,所以我还是新手。

谢谢,

4

1 回答 1

3

我认为您的问题只是该字段的名称。

在您的班级中,名称是“gramrels”,但在您的 JSON 响应中,它是“Gramrels”(大写)。您的程序和 JSON 中的变量名称必须相同,因为 GSON 允许您从 JSON 响应中仅获取您感兴趣的那些字段...因此,如果它在响应中找到不'不与您的任何类属性相对应,GSON 只是忽略该值。

我建议您以这种方式使用注释@SerializedName

@SerializedName("Gramrels")
private List<Gramrels> gramrels;

这样,您可以按照 Java 命名约定将属性名称保持为小写,但您告诉 GSON 您的 JSON 响应中此参数的名称将对应于“Gramrels”...

您也可以对其他变量执行相同操作,例如:

@SerializedName("corp_full_name")
private String corpFullName;

因为corp_full_name不遵循 Java 命名约定...

于 2013-04-11T10:11:17.830 回答