java – Polymorphic Jackson反序列化:获取字符串或字符串数​​组

我的问题与这个问题完全相同,只是我使用的是Java / Jackson而不是C#:

In C# how can I deserialize this json when one field might be a string or an array of strings?

我的输入JSON可以是这样的:

{ "foo": "a string" }

或这个:

{ "foo": ["array", "of", "strings" ] }

我的班级看起来像这样:

class MyClass {
    public List<String> foo;
}

如果输入包含单个字符串,我希望它成为列表中的第一个条目.

如何使用Jackson对foo进行反序列化?我可以写一个自定义的反序列化器,我以前做过,但我认为可能有一种更简单的方法.

最佳答案
有一个名为ACCEPT_SINGLE_VALUE_AS_ARRAY的功能默认关闭,但你可以打开它:

objectMapper = new ObjectMapper()
        .configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

您也可以按使用情况启用它:

class SomeClass {

  @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
  private List<String> items;
  // ...
}

转载注明原文:java – Polymorphic Jackson反序列化:获取字符串或字符串数​​组 - 代码日志