【高效开发工具系列】jackson入门使用

news2025/1/23 11:58:45

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.基本介绍
      • 1.什么是 jackson?
      • 2.jackson 优点?
    • 二.jackson 使用
      • 1.依赖
      • 2.json 字符串转对象
      • 3.对象转 json 字符串
      • 4.二进制数组转 json 对象
      • 5.json 字符串转 list 集合
      • 6.list 转 json 字符串
      • 7.json 字符串转 map
    • 三.fastjson 对比
      • 1.json 字符串转对象
      • 2.fastjson 不能转对象的情况

一.基本介绍

1.什么是 jackson?

Jackson 是一个用于在 Java 应用程序中处理 JSON 格式数据的开源库。它提供了一组功能强大的工具,使开发人员能够轻松地在 Java 对象和 JSON 数据之间进行转换。Jackson 库包含多个模块,其中最常用的两个是:

  1. jackson-databind: 这是 Jackson 库的核心模块,提供了 JSON 和 Java 对象之间的数据绑定。它允许你将 Java 对象转换为 JSON 格式(序列化),或将 JSON 数据转换为 Java 对象(反序列化)。

  2. jackson-core: 这个模块提供了一些基本的 JSON 处理功能,如读取和写入 JSON 树模型。它是 jackson-databind 的基础。

使用 Jackson,你可以轻松地在你的 Java 应用程序中进行 JSON 数据的处理,这在与 Web 服务、前端交互、数据存储等方面非常常见。Jackson 的广泛应用使其成为 Java 生态系统中处理 JSON 的首选库之一。

2.jackson 优点?

Jackson 作为 Java 生态系统中处理 JSON 数据的主要库之一,具有许多优点,使其受到广泛使用。以下是一些 Jackson 库的主要优点:

  1. 性能高效: Jackson 被设计为高性能的 JSON 处理库。它通过使用基于流的处理模型以及一些优化技术,提供了快速的序列化和反序列化性能。

  2. 广泛支持: Jackson 提供了对 Java 对象到 JSON 数据的序列化和反序列化的全面支持。它可以处理复杂的 Java 对象图,包括嵌套和循环引用等情况。

  3. 灵活性: Jackson 提供了许多配置选项和定制功能,使开发人员能够根据其特定需求调整库的行为。这种灵活性使得 Jackson 适用于各种不同的应用场景。

  4. 支持 JSON 树模型: Jackson 的 jackson-core 模块支持 JSON 树模型,使开发人员可以以树的形式访问和操作 JSON 数据。这对于处理动态或未知结构的 JSON 数据非常有用。

  5. 集成广泛: Jackson 被广泛集成到许多 Java 框架和库中,包括 Spring、JAX-RS、Hibernate 等。这种集成使得在这些框架中使用 Jackson 变得非常简单。

  6. 开源和活跃的社区: Jackson 是一个开源项目,拥有活跃的社区支持。这意味着它不断得到更新、改进,并且有大量的文档和示例可用于帮助开发人员更好地使用它。

Jackson 是一个功能强大、高效且灵活的 JSON 处理库,适用于各种 Java 应用程序。

二.jackson 使用

1.依赖

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>

2.json 字符串转对象

/**
 * 字符串转对象
 *
 * @throws Exception
 */
@Test
public void test1() throws Exception {
    ObjectMapper objectMapper = new ObjectMapper();
    String carJson = "{ \"brand\" : \"Mercedes\", \"doors\" : 5 }";
    Car car = objectMapper.readValue(carJson, Car.class);
    System.out.println(objectMapper.writeValueAsString(car));
}

3.对象转 json 字符串

/**
* 对象转字符串
*
* @throws Exception
*/
@Test
public void test2() throws Exception {
  Car car = new Car();
  car.setBrand("宝马");
  car.setDoors(8);
  System.out.println(new ObjectMapper().writeValueAsString(car));
}

4.二进制数组转 json 对象

/**
* 二进制数组转对象
*
* @throws Exception
*/
@Test
public void test3() throws Exception {
  ObjectMapper objectMapper = new ObjectMapper();
  String carJson =
          "{ \"brand\" : \"Mercedes\", \"doors\" : 5 }";
  byte[] bytes = carJson.getBytes("UTF-8");
  Car car = objectMapper.readValue(bytes, Car.class);
  System.out.println(objectMapper.writeValueAsString(car));
}

5.json 字符串转 list 集合

/**
 * 字符串转lsit
 *
 * @throws Exception
 */
@Test
public void test4() throws Exception {
    String jsonArray = "[{\"brand\":\"ford\"}, {\"brand\":\"Fiat\"}]";
    ObjectMapper objectMapper = new ObjectMapper();
    List<Car> cars = objectMapper.readValue(jsonArray, new TypeReference<List<Car>>() {
    });
    System.out.println(objectMapper.writeValueAsString(cars));
}

6.list 转 json 字符串

/**
 * list转字符串
 *
 * @throws Exception
 */
@Test
public void test5() throws Exception {
    List<Car> cars = new ArrayList<>();
    Car car1 = new Car();
    car1.setBrand("宝马");
    car1.setDoors(8);
    cars.add(car1);
    Car car2 = new Car();
    car2.setBrand("奔驰");
    car2.setDoors(10);
    cars.add(car2);
    System.out.println(new ObjectMapper().writeValueAsString(cars));
}

7.json 字符串转 map

/**
 * 字符串转map
 *
 * @throws Exception
 */
@Test
public void test6() throws Exception {
    String jsonObject = "{\"brand\":\"ford\", \"doors\":5}";
    ObjectMapper objectMapper = new ObjectMapper();
    Map<String, Object> jsonMap = objectMapper.readValue(jsonObject,
            new TypeReference<Map<String, Object>>() {
            });
    System.out.println(objectMapper.writeValueAsString(jsonMap));
}

三.fastjson 对比

1.json 字符串转对象

json字符串转对象

//转对象
Myclass myclass = JSONObject.parseObject(jsonStr , Myclass.class);// jsonStr 是String类型。
//转list对象
List<NewPxtOrder> pxtOrderList = JSONObject.parseArray(order,NewPxtOrder.class);

2.fastjson 不能转对象的情况

String redisKey = supplierRelateServiceManager.getRedisKey();
String checkOrderInfo = jedis.get(redisKey);
//  SelfOrderModel selfOrderModel = JSONObject.parseObject(checkOrderInfo, SelfOrderModel.class);
// selfOrderModel.setRejectReason(outExamineVo.getRemark());
JSONObject jsonObject = JSONObject.parseObject(checkOrderInfo);
jsonObject.put("rejectReason", outExamineVo.getRemark());
jedis.set(redisKey, jsonObject.toJSONString());

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1279552.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ASP.NET Core MVC过滤器

1、过滤器分为授权过滤、资源访问过滤、操作方法&#xff08;Action&#xff09;过滤、结果过滤、异常过滤、终结点过滤。上一次咱们没有说异常过滤和终结点过滤&#xff0c;不过老周后面会说的。对这些过滤器&#xff0c;你有印象就行了。 2、所有过滤器接口都有同步版本和异…

可视化开源编辑器Swagger Editor本地部署并实现远程访问管理编辑文档

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagge…

【Python百练——第3练】矩形类及操作

&#x1f490;作者&#xff1a;insist-- &#x1f490;个人主页&#xff1a;insist-- 的个人主页 理想主义的花&#xff0c;最终会盛开在浪漫主义的土壤里&#xff0c;我们的热情永远不会熄灭&#xff0c;在现实平凡中&#xff0c;我们终将上岸&#xff0c;阳光万里 ❤️欢迎点…

一缕青丝寄相思

10年8月16日七夕节男孩向女孩表白,女孩不知道那天是七夕,也没有读懂男孩的爱,女孩在9月22日中秋,向男孩打开了心门,男孩却没有懂女孩的心思.13年后的一封问候邮件,一束女孩的长发和回不去的青春 洒满阳光的午后 转眼间看到你的笑脸 微笑着你对我说 遇上你认识我真好 你说得好莫…

论文解读--Robust lane detection and tracking with Ransac and Kalman filter

使用随机采样一致性和卡尔曼滤波的鲁棒的车道线跟踪 摘要 在之前的一篇论文中&#xff0c;我们描述了一种使用霍夫变换和迭代匹配滤波器的简单的车道检测方法[1]。本文扩展了这项工作&#xff0c;通过结合逆透视映射来创建道路的鸟瞰视图&#xff0c;应用随机样本共识来帮助消…

力扣日记12.3-【二叉树篇】二叉树的所有路径

力扣日记&#xff1a;【二叉树篇】二叉树的所有路径 日期&#xff1a;2023.12.3 参考&#xff1a;代码随想录、力扣 257. 二叉树的所有路径 题目描述 难度&#xff1a;简单 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径…

JAVA代码优化:CommandLineRunner(项目启动之前,预先加载数据)

CommandLineRunner接口是Spring Boot框架中的一个接口&#xff0c;用于在应用程序启动后执行一些特定的代码逻辑。它是一个函数式接口&#xff0c;只包含一个run方法&#xff0c;该方法在应用程序启动后被自动调用。可以帮助我们在应用程序启动后自动执行一些代码逻辑&#xff…

sharding-jdbc实现分库分表

shigen日更文章的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。记录成长&#xff0c;分享认知&#xff0c;留住感动。 &#x1f605;&#x1f605;最近几天的状态有点不对&#xff0c;所以有几天没有更新了。 当我们的数据量比较大…

css实现简单的抽奖动画效果和旋转效果,还有春联效果

使用css的animation和transform和transition可以实现简单的图片放大缩小&#xff0c;旋转&#xff0c;位移的效果&#xff0c;由此可以延伸的动画效果还是挺多的&#xff0c;比如图片慢慢放大&#xff0c;图片慢慢旋转并放大&#xff0c;图片慢慢变化位置等等&#xff0c; 抽奖…

使用pytorch从零开始实现迷你GPT

生成式建模知识回顾: [1] 生成式建模概述 [2] Transformer I&#xff0c;Transformer II [3] 变分自编码器 [4] 生成对抗网络&#xff0c;高级生成对抗网络 I&#xff0c;高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II…

MathType 7.5.2中文版软件使用期到了怎么办?

MathType 7.5.2中文版作为一款专业的公式编辑器&#xff0c;MathType受到很多人的青睐&#xff0c;它可以将编辑好的公式保存成多种图片格式或透明图片模式&#xff0c;可以很方便的添加或移除符号、表达式等模板&#xff08;只需要简单地用鼠标拖进拖出即可)&#xff0c;也可以…

Verilog 入门(八)(验证)

文章目录 编写测试验证程序波形产生值序列重复模式 测试验证程序实例从文本文件中读取向量实例&#xff1a;时序检测器 测试验证程序用于测试和验证设计方法的正确性。Verilog 提供强有力的结构来说明测试验证程序。 编写测试验证程序 测试验证程序有三个主要目的&#xff1a;…

Java 表达式引擎

企业的需求往往是多样化且复杂的&#xff0c;对接不同企业时会有不同的定制化的业务模型和流程。我们在业务系统中使用表达式引擎&#xff0c;集中配置管理业务规则&#xff0c;并实现实时决策和计算&#xff0c;可以提高系统的灵活性和响应能力。 引入规则引擎似乎就能解决这个…

UE学习C++(1)创建actor

创建新C类 在 虚幻编辑器 中&#xff0c;点击 文件&#xff08;File&#xff09; 下拉菜单&#xff0c;然后选择 新建C类...&#xff08;New C Class...&#xff09; 命令&#xff1a; 此时将显示 选择父类&#xff08;Choose Parent Class&#xff09; 菜单。可以选择要扩展的…

你知道MySQL 中的 order by 是怎么工作的吗?

欢迎大家到我的博客浏览。order by是怎么工作的&#xff1f; | YinKais Blog今天我们来看一下 MySQL 中 “ order by ” 是怎么工作的。 我们以一个实际的例子&#xff0c;来探讨这个问题&#xff1a; 假设我们的表是这样定义的&#xff1a; CREATE TABLE t (id int(11) NOT…

数据结构和算法-树与二叉树的存储结构以及树和二叉树和森林的遍历

文章目录 二叉树的存储结构二叉树的顺序存储二叉树的链式存储小结 二叉树的先中后序遍历例题小结 二叉树的层次遍历小结 由遍历序列构造二叉树一个遍历序列即使给定了前中后序&#xff0c;也不能确定该二叉树的形态可以确定的序列组合前序中序后序中序层序中序 小结若前序&…

LeetCode的几道题

一、捡石头 292 思路就是&#xff1a; 谁面对4块石头的时候&#xff0c;谁就输&#xff08;因为每次就是1-3块石头&#xff0c;如果剩下4块石头&#xff0c;你怎么拿&#xff0c;我都能把剩下的拿走&#xff0c;所以你就要想尽办法让对面面对4块石头的倍数&#xff0c; 比如有…

如何使用手机制作证件照

1、打开vx搜索小&#x1f34a;x名称&#xff1a;标准证件照免冠照 2、选择你需要的证件照尺寸类型 3&#xff0e;选择手机照片生活照或者点击开始拍摄&#xff08;建议纯色的墙面好换底色&#xff09; 4&#xff0e;选择背景颜色&#xff0c;红底&#xff0c;蓝底奉背景颜色随你…

LeetCode力扣每日一题(Java):1、两数之和

一、题目 二、解题思路 方法一&#xff1a;暴力枚举 这是最容易想到的一种方法&#xff0c;本质就是二重循环遍历数组&#xff0c;话不多说直接上代码 public int[] twoSum(int[] nums, int target) {for (int i 0; i < nums.length - 1; i) {for (int j i 1; j < …

纯js实现录屏并保存视频到本地的尝试

前言&#xff1a;先了解下&#xff1a;navigator.mediaDevices&#xff0c;mediaDevices 是 Navigator 只读属性&#xff0c;返回一个 MediaDevices 对象&#xff0c;该对象可提供对相机和麦克风等媒体输入设备的连接访问&#xff0c;也包括屏幕共享。 const media navigator…