反序列化- Jackson...
Jackson库
Jackson
库的核心功能是将Java
对象转换为JSON
字符串(序列化)以及将JSON
字符串转换为Java对象(反序列化)
反序列化器及序列化器
JSR310DateTimeDeserializerBase和JSR310FormattedSerializerBase抽象类
- 当你创建这些子类时,需要传入特定的日期类型(如
LocalDateTime
)和日期格式化器(DateTimeFormatter
)。这些子类继承了基础功能后,就变成了可以真正用于将 JSON 字符串解析为指定 Java 日期对象的反序列化器,或者将 Java 日期对象转换为 JSON 字符串的序列化器。
// 构造函数,接受具体的日期类型和格式化器
protected JSR310DateTimeDeserializerBase(Class<T> supportedType, DateTimeFormatter formatter) {
super(supportedType);
this.formatter = formatter;
}
自定义 Jackson 的序列化和反序列化行为
SimpleModule
允许开发者灵活地处理 Java 对象与 JSON 之间的转换。
-
注册自定义序列化器:通过
addSerializer()
方法,可以定义如何将特定的 Java 对象(如LocalDateTime
)转换为 JSON 字符串。 -
注册自定义反序列化器:通过
addDeserializer()
方法,可以定义如何将 JSON 字符串解析为特定的 Java 对象(如LocalDateTime
、LocalDate
)。 -
处理特定类型的转换:例如,通过自定义序列化器处理
Long
类型精度问题,或者根据指定格式处理日期时间类型的转换。
FastJSON
FastJSON
是由阿里巴巴开源的一个高性能 JSON 处理库,主要用于在 Java 中快速地进行 JSON 的序列化(对象转 JSON)和反序列化(JSON 转对象)
核心特点
- 高性能:
FastJSON
的设计目标是提供高效的 JSON 处理能力,尤其是在大数据量的 JSON 数据处理时性能表现良好。 - 简洁的 API:
FastJSON
提供了非常直观的 API,可以轻松完成 JSON 的序列化和反序列化操作,不需要太多的配置。 - 灵活的 JSON 操作:
FastJSON
提供JSONObject
和JSONArray
结构,支持动态处理 JSON 数据,不需要预先定义数据模型类。 - 内置各种类型支持:它可以轻松处理日期、时间、集合类型以及复杂的嵌套对象,支持不同的 JSON 格式。
public static void main(String[] args) {
// 1. 序列化:Java 对象转 JSON
User user = new User(1, "John", "john@example.com");
String jsonString = JSON.toJSONString(user);
System.out.println("Serialized JSON: " + jsonString);
// 2. 反序列化:JSON 转 Java 对象
String jsonInput = "{\"email\":\"john@example.com\",\"id\":1,\"name\":\"John\"}";
User deserializedUser = JSON.parseObject(jsonInput, User.class);
System.out.println("Deserialized User: " + deserializedUser.getName());
// 3. 动态 JSON 操作:使用 JSONObject 和 JSONArray
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", 2);
jsonObject.put("name", "Jane");
JSONArray jsonArray = new JSONArray();
jsonArray.add(jsonObject);
System.out.println("JSON Array: " + jsonArray.toJSONString());
// 4. JSONPath 查询:从复杂 JSON 中提取数据
String complexJson = "{\"store\": {\"book\": [{\"category\": \"fiction\",\"price\": 8.95},{\"category\": \"non-fiction\",\"price\": 12.99}]}}";
Object result = JSONPath.read(complexJson, "$.store.book[?(@.price > 10)]");
System.out.println("Books with price > 10: " + result);
}
原文地址:https://blog.csdn.net/2301_79140115/article/details/142442893
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!