自学内容网 自学内容网

反序列化- 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 对象转 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)!