跳到主要内容

JacksonUtil - JSON 处理

返回文档导航 | 工具类速查表


JacksonUtil 封装 Jackson ObjectMapper,提供 JSON 序列化、反序列化、路径取值能力。

序列化

String json = JacksonUtil.getJson(obj); // 对象 → JSON 字符串
byte[] bytes = JacksonUtil.toJsonAsBytes(obj); // 对象 → byte[]

反序列化

JSONMap map = JacksonUtil.readValue(json); // JSON → JSONMap
User user = JacksonUtil.readValue(json, User.class); // JSON → 指定类型
JSONList list = JacksonUtil.readList(json); // JSON → JSONList
List<User> users = JacksonUtil.readListValue(json, User.class);

支持多种输入类型:

// String, byte[], InputStream, File, URL, Reader 均可
User user = JacksonUtil.readValue(inputStream, User.class);
User user = JacksonUtil.readValue(file, User.class);

路径取值

// 从任意对象按路径取值
Object val = JacksonUtil.at(data, "user.profile.city");
String val = JacksonUtil.at(data, "user.name", String.class);
Integer val = JacksonUtil.at(data, "user.age", Integer.class);

路径语法:点号访问对象属性(a.b.c),方括号访问数组索引([0]),支持负索引([-1])。

类型转换

// 跨类型转换
User user = JacksonUtil.convertValue(map, User.class);
JSONMap map = JacksonUtil.convertValue(user, JSONMap.class);

路径拆分(splitKey)

路径解析器是手写的(约 40 行,非正则),支持 a.b.ca[0].b[1][2].c 等格式:

VAL<String, String> keys = JacksonUtil.splitKey("a.b[1].c");
// keys.v1 = "a", keys.v2 = "b[1].c"

配置说明

  • 默认日期格式:yyyy-MM-dd HH:mm:ss
  • 忽略未知属性
  • 支持单引号和无引号字段名
  • 自定义 ObjectDeserializer:Object 类型默认反序列化为 JSONMap/JSONList

← 上一节:ValUtil | 返回文档导航 | 下一节:DateUtil →