【高效开发工具系列】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.发现问题 – 堆内存状况的对比
《凤凰项目》读书笔记
文章目录 一、书名和作者二、书籍概览2.1 主要论点和结构2.2 目标读者和应用场景 三、核心观点与主题3.1 DevOps的核心原则与文化变革3.2 持续交付与自动化3.3 变更管理与风险控制3.4 关键绩效指标与持续改进 四、亮点与启发4.1 最有影响的观点4.2 对个人专业发展的启示 五、批…...

熬夜会秃头——beta冲刺Day4
这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标记录beta冲刺Day4团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 一、团队成员会议总结 1、成员工作进…...

HTML5+CSS3+Vue小实例:浪漫的心形文字动画特效
实例:浪漫的心形文字动画特效 技术栈:HTML+CSS+Vue 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" conte…...
数据结构-基数排序
基数排序 基本思想 基数排序其实就是依靠多位关键字进行排序,现在我们有一个数据为101,那么“101”就是一个三位 关键字,分别为:“百位->1”、“十位->0”、“个位->1”。 此时我们就可以按照三位关键字进行排序&…...

基于ASP.NET MVC技术的图书管理系统的设计与实现
基于ASP.NET MVC技术的图书管理系统的设计与实现 摘要:图书管理系统是一套高新科学技术和图书知识信息以及传统历史文化完美结合的体现。它改变了传统图书收藏的静态书本式图书服务特征,实现了多媒体存取、远程网络传输、智能化检索、跨库无缝链接、创造…...

C++17中的结构化绑定
C17中的结构化绑定(structured binding):将指定名称绑定到初始化程序的子对象或元素。简而言之,它们使我们能够从元组或结构中声明多个变量。与引用一样,结构化绑定是现有对象的别名;与引用不同,结构化绑定不必是引用类型(referen…...

Mover Creator 用户界面
1 “开始”对话框 首次打开 Mover Creator 时,出现的第一个页面是“开始”对话框,如下所示。从这里开始,用户可以选择开始设计飞机、武器或发动机。在上述每种情况下,用户都可以创建新模型或编辑现有模型。 1.1 新建模型 如果用…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...