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

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 文件中:

<dependency>  <groupId>com.fasterxml.jackson.core</groupId>  <artifactId>jackson-databind</artifactId>  <version>你的版本号</version>  
</dependency>

然后,你可以使用 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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 蒙特卡洛采样
  • 【单元测试】SpringBoot
  • PHP恋爱话术微信小程序系统源码
  • go面试题 Day3
  • 每天一个数据分析题(四百三十一)- 卡方检验
  • 关键字 internal
  • mac安装win10到外接固态硬盘
  • Android12 MultiMedia框架之NuPlayer Surface
  • Redis⑥ —— 缓存设计
  • 在日常生活中,应该如何保护自己的网络安全
  • HDFS和FDFS
  • docker 数据管理和网络通信
  • C++基础(一)
  • 鹈鹕优化算法(POA)及其Python和MATLAB实现
  • 解决vue3中el-input在form表单按下回车刷新页面
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • HTTP--网络协议分层,http历史(二)
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Javascript编码规范
  • node-glob通配符
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • Vim Clutch | 面向脚踏板编程……
  • 闭包--闭包作用之保存(一)
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 微服务框架lagom
  • 想使用 MongoDB ,你应该了解这8个方面!
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 第二十章:异步和文件I/O.(二十三)
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #{}和${}的区别是什么 -- java面试
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (十一)图像的罗伯特梯度锐化
  • (四)stm32之通信协议
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)fock函数详解
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET Core 中插件式开发实现
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .NET 反射 Reflect
  • .Net 知识杂记
  • .NET 中 GetProcess 相关方法的性能
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • .sys文件乱码_python vscode输出乱码
  • ??myeclipse+tomcat