2017-01-20 1 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의 숫자 값이 채워지지 않는다는 것입니다. float, Float, String 및 BigDecimal로 만들려고했는데 결과가 null 또는 0.0입니다.

을 기대하고 내가 처음 필드에 대한 세터에 중단 점을 넣어 시도했습니다

, 나는 무엇을 놓치고? JSON의 대문자가 문제를 일으킬 수 있습니까? 대체 필드 이름이 필요합니까?

+0

여기서 Struct3의 코드는 무엇입니까? –

+0

이 모든 인스턴스를 "생성"하는 유일한 코드는 MappingJackson2HttpMessageConverter를 포함하는 RESTTemplate을 호출하는 것입니다. 그것은 Struct3의 것들을 제외하고는 다른 모든 필드를 채우고 있습니다. – arcy

답변

1

필드 이름의 시작 부분에 대문자로 판명되었습니다. 필드의 getter 전에 줄에 @JsonProperty("First")과 같은 특수 효과를 추가하고 필드 이름을 first으로 바꿨습니다. 이제 작동합니다.