【高效开发工具系列】jackson入门使用
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐: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 库包含多个模块,其中最常用的两个是:
-
jackson-databind: 这是 Jackson 库的核心模块,提供了 JSON 和 Java 对象之间的数据绑定。它允许你将 Java 对象转换为 JSON 格式(序列化),或将 JSON 数据转换为 Java 对象(反序列化)。
-
jackson-core: 这个模块提供了一些基本的 JSON 处理功能,如读取和写入 JSON 树模型。它是 jackson-databind 的基础。
使用 Jackson,你可以轻松地在你的 Java 应用程序中进行 JSON 数据的处理,这在与 Web 服务、前端交互、数据存储等方面非常常见。Jackson 的广泛应用使其成为 Java 生态系统中处理 JSON 的首选库之一。
2.jackson 优点?
Jackson 作为 Java 生态系统中处理 JSON 数据的主要库之一,具有许多优点,使其受到广泛使用。以下是一些 Jackson 库的主要优点:
-
性能高效: Jackson 被设计为高性能的 JSON 处理库。它通过使用基于流的处理模型以及一些优化技术,提供了快速的序列化和反序列化性能。
-
广泛支持: Jackson 提供了对 Java 对象到 JSON 数据的序列化和反序列化的全面支持。它可以处理复杂的 Java 对象图,包括嵌套和循环引用等情况。
-
灵活性: Jackson 提供了许多配置选项和定制功能,使开发人员能够根据其特定需求调整库的行为。这种灵活性使得 Jackson 适用于各种不同的应用场景。
-
支持 JSON 树模型: Jackson 的 jackson-core 模块支持 JSON 树模型,使开发人员可以以树的形式访问和操作 JSON 数据。这对于处理动态或未知结构的 JSON 数据非常有用。
-
集成广泛: Jackson 被广泛集成到许多 Java 框架和库中,包括 Spring、JAX-RS、Hibernate 等。这种集成使得在这些框架中使用 Jackson 变得非常简单。
-
开源和活跃的社区: 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 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
相关文章:
【高效开发工具系列】jackson入门使用
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
深入理解网络非阻塞 I/O:NIO
🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…...
Hdoop学习笔记(HDP)-Part.07 安装MySQL
目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …...
[数据结构]HashSet与LinkedHashSet的底层原理学习心得
我们区分list和set集合的标准是三个:有无顺序,可否重复,有无索引。 list的答案是:有顺序,可重复,有索引。这也就是ArrayList和LinkedList的共性 set的答案是:顺序内部再区分,不可以重复…...
使用unity开发Pico程序,场景中锯齿问题
1、问题 使用unity【非HDR】开发Pico程序,场景中锯齿问题,设置了unity的抗锯齿和渲染方式,及悬挂抗锯齿的脚本,都不能很好的解决项目中图片、文字的锯齿问题,通过摸索找到了妥善的方法 1、修改项目中图片的 GenerateMIpMaps 为勾…...
Spring | Spring的基本应用
目录: 1.什么是Spring?2.Spring框架的优点3.Spring的体系结构 (重点★★★) :3.1 Core Container (核心容器) ★★★Beans模块 (★★★) : BeanFactoryCore核心模块 (★★★) : IOCContext上下文模块 (★★★) : ApplicationContextContext-support模块 (★★★)SpE…...
项目开发维护技术文档(梳理总结中)
目录 项目名称——惠誉灵境 一、项目背景 二、架构设计 1.技术栈 2.架构图 3.代码结构 三、模块划分 1.平台首页 2.登录模块 3.系统模块 (1)系统首页 (2)组织架构 (3)权限管控 ①角色管理 (4&am…...
【接口测试】Apifox实用技巧干货分享
前言 不知道有多少人和我有着这样相似的经历:从写程序只要不报错就不测试😊,到写了程序若是有bug就debug甚至写单元测试,然后到了真实开发场景,大哥和你说,你负责的功能模块的所有接口写完要测试一遍无误在…...
车联网架构设计(一)_消息平台的搭建
车联网是物联网的一个主要应用方向,车辆通过连接车联网平台,实时进行消息的交互,平台可以提供车辆远程控制,故障检测,车路协同等各方面的功能。 我在车联网行业从事了很长时间的技术工作,参与了整个车联网…...
(蓝桥杯)1125 第 4 场算法双周赛题解+AC代码(c++/java)
题目一:验题人的生日【算法赛】 验题人的生日【算法赛】 - 蓝桥云课 (lanqiao.cn) 思路: 1.又是偶数,又是质数,那么只有2喽 AC_Code:C #include <iostream> using namespace std; int main() {cout<<2;return 0; …...
也可Adobe Animate
Animate CC 由原Adobe Flash Professional CC 更名得来,2015年12月2日:Adobe 宣布Flash Professional更名为Animate CC,在支持Flash SWF文件的基础上,加入了对HTML5的支持。并在2016年1月份发布新版本的时候,正式更名为…...
【面试HOT200】回溯篇
系列综述: 💞目的:本系列是个人整理为了秋招面试的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于【CodeTopHot300】进行的,每个知识点的修正和深入主要参…...
JVM——内存溢出和内存泄漏
目录 1. 内存溢出和内存泄漏内存泄漏的常见场景解决内存溢出的思路1.发现问题 – Top命令2.发现问题 – VisualVM3.发现问题 – Arthas4.发现问题 – Prometheus Grafana5.发现问题 – 堆内存状况的对比:将指定名称绑定到初始化程序的子对象或元素。简而言之,它们使我们能够从元组或结构中声明多个变量。与引用一样,结构化绑定是现有对象的别名;与引用不同,结构化绑定不必是引用类型(referen…...
Mover Creator 用户界面
1 “开始”对话框 首次打开 Mover Creator 时,出现的第一个页面是“开始”对话框,如下所示。从这里开始,用户可以选择开始设计飞机、武器或发动机。在上述每种情况下,用户都可以创建新模型或编辑现有模型。 1.1 新建模型 如果用…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...

