【问题标题】:Polymorphic Jackson deserialization: getting either a string or an array of strings多态杰克逊反序列化:获取字符串或字符串数​​组
【发布时间】:2018-02-25 15:59:11
【问题描述】:

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

【问题讨论】:

标签: java json jackson


【解决方案1】:

有一个叫做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;
  // ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    相关资源
    最近更新 更多