jackson映射字符串或简单字符串列表
我试图从API中获取一些Json并将它们解析为一些POJO以与它们一起工作但我有这种情况,我可以获得一个键的简单字符串或字符串的数组列表。
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" ] } }] }
我正在使用Spring Rest从API中获取结果。 我创建了一个POJO,表示使用List
定义categoryKey
,在我的RestTemplate
我定义了一个ObjectMapper
,我在其中为简单字符串的情况启用了DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY
但这不起作用!!
有什么建议么?
除了已经提到的全局配置之外,还可以在单个属性上支持此function:
public class Container { @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) // ... could also add Feature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED public List tags; }
我在Spring之外只用jackson尝试了这个,它按预期工作:
ObjectMapper mapper = new ObjectMapper(); mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
请注意, RestTemplate
使用自己的ObjectMapper
注册MappingJacksonHttpMessageConverter
。 检查此答案以了解如何配置此ObjectMapper
。
因为它是一个键列表,它将工作。 如果in case属性具有单个值而不是如下所示,则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 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"]}}}
- RestEasy:org.codehaus.jackson.map.JsonMappingException:无法从START_OBJECT标记(..)中反序列化java.util.ArrayList的实例
- 多个相同返回类型的Jackson序列化器
- 你如何覆盖Jackson 2.0中的null序列化器?
- 使用Gson或Jackson对JSON进行反序列化时忽略空字段
- Java对象用jackson将列表扩展到Json
- jackson使用spring接口列表反序列化对象
- jackson反序列化JsonIdentityReference(alwaysAsId = true)
- jackson反序列化哈希映射
- jacksonJSON – unmarshal上的“没有单字符串构造函数/工厂方法”错误