2016-07-13 9 views
1

私がクラスをやると、私は以下のレスポンスを受け取りました。Jsonレスポンスの値がBeanクラスに設定されていません

応答:

 { 
      "_index": "a_index", 
"total":9, 
      "_type": "e", 
      "_id": "BSKnamtd_8-egMNvh", 
      "_data": 2.076404564, 
      "_secure": { 
       "email": "[email protected]" 
      } 
      } 

は、この応答を設定します。私はpojoクラスを作成しました。私はrestClientコールを打つとき

public class data implements Serializable { 

    private static final long serialVersionUID = 644188100766481108L; 
    private String _index; 
    private Integer total; 
    private String _type; 
    private String _id; 
    private Double _data; 
    private Source _secure; 

    public String getIndex() { 
     return _index; 
    } 

    public void setIndex(String _index) { 
     this._index = _index; 
    } 

    public Integer getTotal() { 
     return total; 
    } 

    public void setTotal(Integer total) { 
     this.total = total; 
    } 

    public String getType() { 
     return _type; 
    } 

    public void setType(String _type) { 
     this._type = _type; 
    } 

    public String getId() { 
     return _id; 
    } 

    public void setId(String _id) { 
     this._id = _id; 
    } 

    public Double getData() { 
     return _data; 
    } 

    public void setData(Double _data) { 
     this._data = _data; 
    } 

    public Source getSecure() { 
     return _secure; 
    } 

    public void setSecure(Source _secure) { 
     this._secure = _secure; 

    } 

} 

、私はNULLとして取得した値を、残りの唯一の「合計」の値を取得しています。アンダースコア( "")の残りの変数を持たない "total"変数には ""があり、問題に直面しています。

この問題の解決方法をお手伝いしてください。

+0

どれ運? –

答えて

0

JSONオブジェクトは

... 
"_index": "a_index", 
"total":9, 
... 

されており、これら二つの性質のためのプロパティは次のとおりです。あなたが見ることができるように

public void setIndex(String _index) { 
     this._index = _index; 
    } 

public void setTotal(Integer total) { 
     this.total = total; 
    } 

は、JSON _indexプロパティためJavaプロパティですインデックス(setIndex)

指数_index異なるので、JSONオブジェクトがマッピングされているときにプロパティ_indexを見つけることができないので、ヌルなります。

一方では、JSON総財産ためJavaプロパティ合計(setTotal)であることを持っています。

この場合、JsonとJavaのプロパティは同じ名前であるため、ロードされた値が取得されます。

0

Javaクラスのプロパティ名はオブジェクトマッパーには表示されません(private)。あなたの場合、ゲッター/セッターの名前が重要です。 JSONオブジェクトのプロパティ名をJavaクラス(POJO)にマップするために使用されます。

あなたには2つの選択肢があります。ダーティ一つは、彼らがJSONのプロパティ名に対応するようにちょうどset_index()set_type()などにセッター名を変更することで、またはあなたが右のそれを行うことができます。

Javaクラスのプロパティとメソッドの
  1. 変更名標準的な慣習にそのコードので、素晴らしいとreadablです。
  2. @JsonPropertyのプロパティに注釈を付けて、JSONとJavaオブジェクト間の異なるデフォルトマッピングを表現します。注釈タイプJsonPropertyのJavaドキュメントから

デフォルト値(「」)フィールド名は変更せず プロパティ名として使用されていることを示し、それは、非 に指定することができ空の値を指定して別の名前を指定します。プロパティ名は、JSONオブジェクトのフィールド名として外部で使用される の名前を参照します。注釈付き

例:これまでと

public class test { 

    @JsonProperty("_index") 
    private String index; 

    private Integer total; 

    @JsonProperty("_type") 
    private String type; 

    public String getIndex() { return index; } 
    public void setIndex(String index){ this.index = index; } 

    public Integer getTotal() { ... } 
    public void setTotal(Integer total) { ... } 

    public String getType() { ... } 
    public void setType(String type) { ... } 
    .... 
} 
関連する問題