java - 如何在 jackson 的反序列化过程中使用注释强制 ACCEPT_SINGLE_VALUE_AS_ARRAY

标签 java json spring jackson

有没有办法在类中的 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/

相关文章:

java - 使用 arraylist 匹配 Hashmap 中的键

javascript - 用 json 数组中的空格替换逗号

java - 如何在spring-mvc中接受具有相同id的多个REST查询参数?

java - 捕获 xsl 结果文档的输出流

java - 使用 Vertx 时用于 Redis 的 ORM 框架

php - JavaScript Ajax 请求与 jQuery $.ajax

带有 JPA 2.0 ClassCastException 的 Spring 3.0 ORM

java - Struts2.3.12 junit4 testcase request & session 为空

java - 我如何通过 Jena 向我的 Ontology 添加一些三元组?

java - 如何使用简单的 JSON 库基于索引获取整个 JSON 数组