• java基础学习:序列化之 - ObjectMapper


    一、介绍

    • ObjectMapper 是 Jackson 库中的一个核心类,用于在 Java 对象和 JSON 数据之间进行转换。Jackson 是一个流行的 Java 库,用于处理 JSON 数据。它提供了灵活的方式来序列化和反序列化 Java 对象,即将 Java 对象转换成 JSON 格式的字符串,以及将 JSON 格式的字符串转换回 Java 对象。
    • ObjectMapper提供了读写JSON的功能,既可以读写基本pojo(普通Java对象),也可以读写通用JSON树模型(JsonNode),还提供了执行转换的相关功能。它也是高度可定制的,既可以处理不同风格的JSON内容,也可以支持更高级的对象概念,如多态性和对象标识。ObjectMapper还充当更高级的ObjectReader和objectwwriter类的工厂。Mapper(和它构造的ObjectReaders, ObjectWriters)将使用JsonParser和JsonGenerator的实例来实现JSON的实际读/写。请注意,虽然大多数读写方法都是通过这个类公开的,但有些功能只能通过ObjectReader和objectwwriter公开:具体来说,读取/写入较长的值序列只能通过ObjectReader. readvalues (InputStream)和ObjectWriter. writevalvalues (OutputStream)。

    二、主要功能

    • 序列化(Serialization):将 Java 对象转换成 JSON 格式的字符串。这通常用于将数据存储到文件、数据库或通过网络发送到其他系统。
    • 反序列化(Deserialization):将 JSON 格式的字符串转换回 Java 对象。这通常用于从文件、数据库或网络接收的 JSON 数据中恢复 Java 对象。

    三、使用方法

    要使用 ObjectMapper,首先需要将其添加到你的项目中。如果你使用 Maven,可以添加以下依赖到你的 pom.xml 文件中:

      
        com.fasterxml.jackson.core  
        jackson-databind  
        你的版本号  
    
    

    然后,你可以使用 ObjectMapper 的实例来序列化和反序列化数据。

    • 序列化示例
    import com.fasterxml.jackson.databind.ObjectMapper;  
      
    public class JsonExample {  
        public static void main(String[] args) {  
            try {  
                ObjectMapper mapper = new ObjectMapper();  
                  
                Person person = new Person();  
                person.setName("John Doe");  
                person.setAge(30);  
                  
                String jsonString = mapper.writeValueAsString(person);  
                System.out.println(jsonString);  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
      
        static class Person {  
            private String name;  
            private int age;  
      
            // getters and setters  
        }  
    }
    
    • 反序列化示例
    import com.fasterxml.jackson.databind.ObjectMapper;  
      
    public class JsonExample {  
        public static void main(String[] args) {  
            try {  
                ObjectMapper mapper = new ObjectMapper();  
                  
                String jsonString = "{\"name\":\"John Doe\",\"age\":30}";  
                Person person = mapper.readValue(jsonString, Person.class);  
                  
                System.out.println(person.getName() + " is " + person.getAge() + " years old.");  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
      
        static class Person {  
            private String name;  
            private int age;  
      
            // getters and setters  
        }  
    }
    
    • 注意事项
      • ObjectMapper 是线程安全的,但创建它的开销相对较大,因此建议将其声明为单例或重用实例
      • 在处理复杂的对象或大型 JSON 数据时,注意内存和性能的影响。
      • 可以使用 Jackson 的注解来定制序列化和反序列化的行为,例如 @JsonIgnore、@JsonProperty 等。
      • Jackson 提供了丰富的配置选项,允许你根据需要调整其行为。

    官网:

    • https://access.redhat.com/webassets/avalon/d/red-hat-jboss-enterprise-application-platform/7.1.beta/javadocs/com/fasterxml/jackson/databind/ObjectMapper.html
  • 相关阅读:
    js数组常用方法大全
    docker搭建vulhub
    板带偏移式双辊架纠偏比例阀放大器
    WPF中的依赖属性
    基于C++的RSA公钥加密算法实验
    层次聚类分析
    BEVFormer 论文阅读
    2303. 计算应缴税款总额
    VS2010 Windows API 串口编程 (二)
    DP读书:《半导体物理学(第八版)》(四)半导体的导电性-玻尔兹曼-电导率
  • 原文地址:https://blog.csdn.net/yuming226/article/details/140465603