除了我使用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?我可以写一个自定义的反序列化器,我以前做过,但我认为可能有一种更简单的方法。
答案 0 :(得分: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;
// ...
}