2017-01-06 2 views
2

API에서 일부 Json을 가져오고 POJO로 구문 분석하려고하지만이 경우에는 간단한 String 또는 arrayList 키를 얻을 수 있습니다. 문자열의.Jackson Mapping 문자열 또는 간단한 문자열 목록

json으로는 다음과 같습니다 : 나는 API의 결과를 얻기 위해 봄 휴식을 사용하고

{ 
    "offerDisplayCategoryMapping": [ 
    { 
     "offerKey": "EUICC_BASE_ACTIVATION_V01", 
     "categoriesKeys": { 
     "categoryKey": "Included" 
     } 
    }, 
    { 
     "offerKey": "EUICC_BASE_ACTIVATION_V02", 
     "categoriesKeys": { 
     "categoryKey": "Included" 
     } 
    }, 
    { 
     "offerKey": "EUICC_BASE_ACTIVATION_V03", 
     "categoriesKeys": { 
     "categoryKey": [ 
      "Option", 
      "Included" 
     ] 
     } 
    }] 
} 

. categoriesKeys을 나타내는 categoriesKeys을 만들고 categoryKey을 정의하고 RestTemplate을 정의한 ObjectMapper을 정의했습니다. 간단한 문자열의 경우 DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY이 가능하지만 작동하지 않습니다 !!

제안 사항?

+0

당신이 당신의 POJO (들)과에'RestTemplate'를 추가하면 도움이 쉬울 것 문제 –

답변

6

, 개별 속성에이 기능을 지원하는 것도 가능합니다 :

public class Container { 
    @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) 
    // ... could also add Feature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED 
    public List<String> tags; 
} 
2

키 목록이므로 작동 할 것입니다. 경우 속성은 하나의 값과 DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY가 배열로 역 직렬화 하나의 속성을 보장 아래와 같이 배열에

{ 
    "CategoriesKeys":{ 
    "categoryKey":{ 
     "keys":"1" 
     } 
    } 
} 



@JsonRootName("CategoriesKeys") 
    protected static class CategoriesKeys{ 

     private CategoryKey categoryKey; 
//getters and setters 

} 

protected static class CategoryKey{ 

     private List<String> keys; 
//getters and setters 

} 

TestClass: 

ObjectMapper mapper=new ObjectMapper(); 
    mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true); 
    mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); 
    mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); 

Output: 

{"CategoriesKeys":{"categoryKey":{"keys":["1"]}}} 
3

나는 봄 외부 단지 잭슨이 시도하고가 예상 작품으로하지가있는 경우 :

ObjectMapper mapper = new ObjectMapper(); 
mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY); 

마음이 RestTemplate 레지스터 ObjectMapper 그 자체와 MappingJacksonHttpMessageConverter. 구성 방법은 Check this answerObjectMapper입니다.

이미 언급 전역 구성에 추가