2017-01-06 73 views
2

我想從一個API獲取一些Json並解析它們到一些POJO的工作,但我有這種情況下,我可以得到一個簡單的字符串或一個數組列表ListList的字符串。傑克遜映射字符串或簡單的字符串列表

JSON的是這樣的:

{ 
    "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" 
     ] 
     } 
    }] 
} 

我使用彈簧安置來從API的結果。我創建了一個代表categoriesKeys的POJO,其中List<String>定義爲categoryKey,在我的RestTemplate中定義了ObjectMapper,其中我爲DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY啓用了簡單字符串的情況,但這不起作用!

有什麼建議嗎?

+0

這將是更容易幫助,如果您添加您的POJO(S)和你的'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註冊一個MappingJacksonHttpMessageConverter與它自己的ObjectMapperCheck this answer有關如何配置此ObjectMapper

相關問題