有没有办法在类中的 List 属性上使用注释以在 Jackson
中使用 ACCEPT_SINGLE_VALUE_AS_ARRAY
?我正在使用 Spring 并得到以下异常
nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token
假设我有一个类如下:
public class MyClass {
private List < String > value;
}
我的 JSON 结构如下:
案例一:
[{"operator": "in", "value": ["Active"], "property": "status"}]
案例2:
[{"operator": "like", "value": "aba", "property": "desc"}]
我应该使用什么注释让框架知道我希望在反序列化时对这两种情况进行相同的处理。
更新: 为了更清楚起见,我将更新移至本文中的答案。
最佳答案
您可以使用 @JsonFormat注释,
public class MyClass {
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
private List<String> value;
}
要使用此功能,您需要拥有 Jackson 版本 min 2.7.0
。您也可以使用其他可用的JsonFormat Features
对于版本 2.6.x
@Autowired private ObjectMapper mapper;
//...
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
- 将此代码添加到您的
Initializer Class
。 - 或者你可以直接在你的
Bean Configuration
中配置
Jackson
这些可以解决问题,但会为每个反序列化
进程激活。
关于java - 如何在 jackson 的反序列化过程中使用注释强制 ACCEPT_SINGLE_VALUE_AS_ARRAY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39041496/