当前位置: 首页 > news >正文

反序列化- 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 对象(如 LocalDateTimeLocalDate)。

  • 处理特定类型的转换:例如,通过自定义序列化器处理 Long 类型精度问题,或者根据指定格式处理日期时间类型的转换。

FastJSON

FastJSON 是由阿里巴巴开源的一个高性能 JSON 处理库,主要用于在 Java 中快速地进行 JSON 的序列化(对象转 JSON)和反序列化(JSON 转对象)

核心特点
  1. 高性能FastJSON 的设计目标是提供高效的 JSON 处理能力,尤其是在大数据量的 JSON 数据处理时性能表现良好。
  2. 简洁的 APIFastJSON 提供了非常直观的 API,可以轻松完成 JSON 的序列化和反序列化操作,不需要太多的配置。
  3. 灵活的 JSON 操作FastJSON 提供 JSONObjectJSONArray 结构,支持动态处理 JSON 数据,不需要预先定义数据模型类。
  4. 内置各种类型支持:它可以轻松处理日期、时间、集合类型以及复杂的嵌套对象,支持不同的 JSON 格式。
 public static void main(String[] args) {// 1. 序列化:Java 对象转 JSONUser 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 和 JSONArrayJSONObject 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);}


http://www.mrgr.cn/news/33663.html

相关文章:

  • java八股笔记-1-java基础
  • 代码随想录第二十三天| 39. 组合总和 40.组合总和II 131.分割回文串
  • MySQL中字段类型和Java对象中的数据类型对应关系
  • react的创建与书写
  • 「QT」顺序容器类 之 QVector 动态数组类
  • leetcode-15-三数之和
  • ComfyUI三个超实用插件,一定不要错过!
  • JavaEE: 创造无限连接——网络编程中的套接字
  • Python中的null是什么?
  • 梧桐数据库(WuTongDB):向量化查询优化器的技术细节介绍
  • 一行代码实现快速排序
  • OJ在线评测系统 后端开发数据库初始化工作 开发库表 建立数据库索引 Mybatis映射初始化接口开发
  • golang学习笔记2-语法要求,注释与代码风格
  • pycharm加载虚拟环境及运行代码
  • 【VUE3.0】动手做一套像素风的前端UI组件库---Radio
  • 模拟电路工程师面试题
  • Android——Application
  • awd初试
  • 车辆重识别(CVPR2016图像识别的深度残差学习ResNet)论文阅读2024/9/21
  • python异常处理知识简记
  • 1542. 找出最长的超赞子字符串
  • Snap 发布新一代 AR 眼镜,有什么特别之处?
  • PCB设计中百兆以太网是否需要差分布线?
  • 皮科医生对网红药膏的说明
  • 7. 无线网络安全
  • 【.NET 8 实战--孢子记账--从单体到微服务】--特别说明