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.c、a[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