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_name満たされていgramrelsますがnullです。私は何を間違っていますか?

Jsonを使用するのは初めてなので、まだ慣れていません。

ありがとう、

4

1 に答える 1

3

あなたの問題はフィールドの名前だけだと思います。

あなたのクラスでは名前は「gramrels」ですが、JSON 応答では「Gramrels」(大文字) です。プログラムと JSON の変数の名前は同じでなければなりません。GSON を使用すると、JSON 応答から関心のあるフィールドのみを取得できるためです。応答で JSON 値が見つかった場合クラス属性のいずれにも対応しない場合、GSON はその値を無視します。

@SerializedNameこの方法で注釈を使用することをお勧めします。

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

このようにして、Java 命名規則に従って属性の名前を小文字のままにすることができますが、JSON 応答のこのパラメーターの名前が「Gramrels」に対応することを GSON に伝えています...

他の変数でも同じことができます。次に例を示します。

@SerializedName("corp_full_name")
private String corpFullName;

corp_full_nameJavaの命名規則に従っていないため...

于 2013-04-11T10:11:17.830 に答える