能否配置Jackson ObjectMapper将JSON数组反序列化为可变集合而非不可变集合?
解决Jackson反序列JSON数组为可变ArrayList的Spring Boot配置方案
方法一:通过application.yml指定默认集合类型
在Spring Boot的application.yml中添加配置,强制Jackson将JSON数组反序列化为ArrayList:
spring: jackson: mapper: # 指定默认集合实现类为ArrayList DEFAULT_COLLECTION_TYPE: java.util.ArrayList
方法二:排除Guava Jackson模块(若引入Guava依赖)
如果项目引入了Guava依赖,Jackson可能默认使用Guava的ImmutableList作为集合实现。可通过配置排除对应模块:
spring: jackson: modules: # 排除Guava的Jackson模块,避免默认生成ImmutableList exclude: com.fasterxml.jackson.datatype:jackson-datatype-guava
验证方式
编写简单接口或单元测试确认效果:
@RestController public class TestController { @PostMapping("/test-list") public String checkListType(@RequestBody List<String> inputList) { // 打印集合实际类型 System.out.println(inputList.getClass().getName()); return inputList.getClass().getName(); } }
发送JSON数组请求(如["apple", "banana"]),控制台应输出java.util.ArrayList。
内容的提问来源于stack exchange,提问作者times29
相关产品推荐
相关产品推荐

