我的问题与这个问题几乎相同,只是我使用的是 Java/Jackson 而不是 C#:
在 C# 中,当一个字段可能是字符串或字符串数组时,如何反序列化此 json?
我的输入 JSON 可以是这样的:
{ "foo": "a string" }
Run Code Online (Sandbox Code Playgroud)
或这个:
{ "foo": ["array", "of", "strings" ] }
Run Code Online (Sandbox Code Playgroud)
我的课是这样的:
class MyClass {
public List<String> foo;
}
Run Code Online (Sandbox Code Playgroud)
如果输入包含单个字符串,我希望它成为列表中的第一个条目。
如何使用 Jackson 反序列化 foo?我可以写一个自定义的解串器,我以前做过,但我认为可能有更简单的方法。
有一个名为ACCEPT_SINGLE_VALUE_AS_ARRAY的功能,默认情况下处于关闭状态,但您可以将其打开:
objectMapper = new ObjectMapper()
.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
Run Code Online (Sandbox Code Playgroud)
您还可以根据情况打开它:
class SomeClass {
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
private List<String> items;
// ...
}
Run Code Online (Sandbox Code Playgroud)