如何使用Jackson解析JSON字符串数组且无需编写自定义模型类
使用Jackson无模型类解析字符串类型JSON数组的方案
Jackson原生支持直接将纯字符串JSON数组反序列化为集合或字符串数组,无需自定义对应的实体类,以下是两种常用实现方式:
前置准备
首先确保项目已引入Jackson核心依赖,全局初始化ObjectMapper实例(生产环境建议复用单例实例):
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; // 全局复用的ObjectMapper实例 ObjectMapper objectMapper = new ObjectMapper();
方案1:反序列化为 List<String> 集合
如果需要使用集合结构存储结果,可借助TypeReference指定泛型类型:
String jsonStr = "[\"UUID1\",\"UUID2\",\"UUID3\"]"; // 反序列化为字符串List List<String> uuidList = objectMapper.readValue(jsonStr, new TypeReference<List<String>>() {}); // 验证输出 for (String uuid : uuidList) { System.out.println(uuid); }
方案2:反序列化为 String[] 原生数组
如果只需要数组结构,直接指定数组类作为反序列化目标类型即可,无需额外类型引用:
String jsonStr = "[\"UUID1\",\"UUID2\",\"UUID3\"]"; // 反序列化为字符串数组 String[] uuidArray = objectMapper.readValue(jsonStr, String[].class); // 验证输出 for (String uuid : uuidArray) { System.out.println(uuid); }
注意事项
- 若JSON数组中存在非字符串类型的元素,反序列化过程会抛出类型转换异常,可根据业务需要提前开启Jackson的类型容错配置
ObjectMapper实例创建开销较大,生产环境不要每次反序列化都新建实例,建议注册为Spring Bean或使用静态单例持有
内容的提问来源于stack exchange,提问作者Arzybek
相关产品推荐
相关产品推荐

