json 多形态Jackson反序列化:获取字符串或字符串数组

2cmtqfgy  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(172)

我的问题与这个问题几乎相同,只是我使用的是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?我可以编写一个自定义的反序列化器,我以前做过,但我认为可能有一种更简单的方法。

yb3bgrhw

yb3bgrhw1#

有一个名为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;
  // ...
}

相关问题