2017-01-20 2 views
1

私は次のようなJSON構造を持ってを返さない:JSONパーサーは番号

{ 
    "status": "Completed", 
    "notes": null, 
    "members": { 
     "0":  { 
     "year": "2", 
     "details":   { 
      "id": "14899975", 
      "anotherId": "11013306" 
     }, 
     "aName": "Fred", 
     "amounts":   { 
      "First": 589.48, 
      "Second": 1000, 
      "Third": 339.48 
     } 
     }, 
     "1":  { 
     "year": "2", 
     "details":   { 
      "id": "14899976", 
      "anotherId": "11013306" 
     }, 
     "aName": "George", 
     "amounts":   { 
      "First": 222.22, 
      "Second": 2000, 
      "Third": 22.22 
     } 
     }, 
     "2":  { 
     "year": 1, 
     "details":   { 
      "id": "14899976", 
      "anotherId": "11013306" 
     }, 
     "aName": "Albert", 
     "amounts":   { 
      "First": 333.33, 
      "Second": 3000, 
      "Third": 33.33 
     }, 
     } 
    } 
} 

私は上記のJSONの構造を解析した結果を受け取るために春RESTTemplateとJacksonMapping2HttpMessageConverter、および以下の構造を使用しています:

@JsonIgnoreProperties(ignoreUnknown = true) 
public class Response { 
    private String   status; 
    private String   notes; 
    private Map<String,Struct1> quotes; 
} 

@JsonIgnoreProperties(ignoreUnknown = true) 
class Struct1 { 
    private int   year; 
    private Struct2  details; 
    private String   aName; 
    private Struct3  amounts; 
} 

@JsonIgnoreProperties(ignoreUnknown = true) 
class Struct2 { 
    private String id; 
    private String anotherId; 
} 

@JsonIgnoreProperties(ignoreUnknown = true) 
class Struct3 { 
    private float First; 
    private float Second; 
    private float Third; 
} 

これらはすべて、すべてのフィールドに適切なセッターとゲッターを持っています。

私の問題は、Struct3の数値の値が入力されていないことです。浮動小数点数、浮動小数点数、文字列、およびBigDecimalにしようとしましたが、結果はnullまたは0.0です。

私は私が何をしないのです

を期待して、最初のフィールドのセッターにブレークポイントを入れて試してみましたか? JSONの大文字で問題が発生する可能性がありますか、代替フィールド名が必要ですか?

+0

ここで、Struct3を作成するためのコードはありますか? –

+0

すべてのインスタンスを「作成」するための唯一のコードは、MappingJackson2HttpMessageConverterを含むRESTTemplateを呼び出しています。 Struct3のものを除いて、他のすべてのフィールドを埋めています。 – arcy

答えて

1

フィールド名の先頭に大文字であることが判明しました。フィールドのゲッターの前の行に@JsonProperty("First")のような注釈を追加し、フィールドの名前をfirstに変更しました。