杰克逊映射字符串或简单字符串列表

Hab*_*chi 7 java spring json jackson mapper

我试图从API中获取一些Json并将它们解析为一些POJO以与它们一起工作但我有这种情况我可以获得一个简单的String或一个字符串的数组.

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"
        ]
      }
    }]
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Spring Rest从API中获取结果.我创建了一个POJO代表categoriesKeys一个List<String>定义categoryKey,在我RestTemplate定义的ObjectMapper地方我启用DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY了简单字符串的情况,但这不起作用!!

有什么建议?

Sta*_*Man 13

除了已经提到的全局配置之外,还可以在单​​个属性上支持此功能:

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;
}
Run Code Online (Sandbox Code Playgroud)


Man*_*dis 5

我在 Spring 外只用 jackson 尝试过这个,它按预期工作:

ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
Run Code Online (Sandbox Code Playgroud)

RestTemplatea 注册到MappingJacksonHttpMessageConverter它自己的ObjectMapper. 检查此答案以了解如何配置它ObjectMapper