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

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
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.rhkb.cn/news/208742.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用VC++设计程序实现K近邻中值滤波器(KNNMF)、最小均方差滤波器、矢量中值滤波算法进行滤波

VC实现若干种图像滤波技术2 获取源工程可访问gitee可在此工程的基础上进行学习。 该工程的其他文章&#xff1a; 01- 一元熵值、二维熵值 02- 图像平移变换&#xff0c;图像缩放、图像裁剪、图像对角线镜像以及图像的旋转 03-邻域平均平滑算法、中值滤波算法、K近邻均值滤波器 …

瑞云科技参与《数字孪生世界白皮书》编写,实时云渲染助力数字孪生

为了促进数字孪生技术的发展和应用&#xff0c;易知微与数字孪生世界企业联盟联合众多行业专家以及多家业内企业共同编写了《数字孪生世界白皮书&#xff08;2023&#xff09;》。该白皮书从数字孪生的综述、应用架构、核心技术、新型技术成果和重点行业应用等方面&#xff0c;…

图论|并查集理论基础 1971. 寻找图中是否存在路径

什么是并查集 并查集是一种数据结构&#xff0c;用于处理一些不交集的合并及查询问题。它支持两种操作&#xff1a; 查找&#xff08;Find&#xff09;&#xff1a;确定某个元素属于哪个子集。它可以用来判断两个元素是否属于同一个子集。 合并&#xff08;Union&#xff09;&…

WebGL笔记:矩阵旋转运算的原理和实现

矩阵 矩阵&#xff08;Matrix&#xff09;是一个按照矩形纵横排列的复数集合 矩阵就像一个矩形的阵盘&#xff0c;通过其中纵横排列的元素我们可以摆出不同功能的阵法&#xff0c;比如位移矩阵、旋转矩阵、缩放矩阵 …在矩阵中的每一行&#xff0c;或者每一列数字构成的集合&a…

Flutter开发type ‘Future<int>‘ is not a subtype of type ‘int‘ in type cast错误

文章目录 问题描述错误源码 问题分析解决方法修改后的代码 问题描述 今天有个同事调试flutter程序时报错&#xff0c;问我怎么解决&#xff0c;程序运行时报如下错误&#xff1a; type ‘Future’ is not a subtype of type ‘int’ in type cast 错误源码 int order Databas…

2015年五一杯数学建模C题生态文明建设评价问题解题全过程文档及程序

2015年五一杯数学建模 C题 生态文明建设评价问题 原题再现 随着我国经济的迅速发展&#xff0c;生态文明越来越重要&#xff0c;生态文明建设被提到了一个前所未有的高度。党的十八大报告明确提出要大力推进生态文明建设&#xff0c;报告指出“建设生态文明&#xff0c;是关系…

探索意义的深度:自然语言处理中的语义相似性

一、说明 语义相似度&#xff0c;反应出计算机对相同内容&#xff0c;不同表达的识别能力。因而识别范围至少是个句子&#xff0c;最大范围就是文章&#xff0c;其研究方法有所区别。本文将按照目前高手的研究成绩&#xff0c;作为谈资介绍给诸位。 二、语义相似度简介 自然语言…

团队怎么高效制作问卷?

制作调查问卷时并不是一个人就能单独完成&#xff0c;通常情况下&#xff0c;完成一份调查问卷往往需要一个团队的成员参与&#xff0c;相互协作&#xff0c;共同完成。不过&#xff0c;多人协作经常会遇到协作壁垒&#xff0c;导致效率低下&#xff0c;那团队怎么才能高效协作…

【面试经典150 | 二分查找】搜索二维矩阵

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;二分查找 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等…

前端笔记(二):CSS 选择器与特性

CSS&#xff08;层叠样式表&#xff09;是一种样式表语言&#xff0c;用于描述HTML或XML文档的呈现方式。它定义了如何在屏幕、纸张或其他媒体上显示文档的样式、布局和外观。 里面的代码由 选择器 { } 组成 体验 CSS CSS 可以让我们界面变得更加美观&#xff0c;这是 CSS 的…

OpenSSH 漏洞修复升级最新版本

Centos7系统ssh默认版本一般是OpenSSH7.4左右&#xff0c;低版本是有漏洞的而且是高危漏洞&#xff0c;在软件交付和安全扫描上是过不了关的&#xff0c;一般情况需要升级OpenSSH的最新版本 今天详细说下升级最新版本的处理过程&#xff08;认真看会发现操作很简单&#xff0c…

k8s-daemonset、job、cronjob控制器 6

Daemonset控制器&#xff08;一个节点部署一个&#xff09; 、 创建Daemonset控制器 控制节点上不能进行部署&#xff0c;有污点 解决方式&#xff1a; 扩容节点&#xff0c;token值过期的解决方法&#xff1a; 回收pod job控制器 需要使用perl镜像&#xff0c;仓库没有&…

基于Springboot + vue的汽车资讯网站

qq&#xff08;2829419543&#xff09;获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;springboot 前端&#xff1a;采用vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xf…

阅读软件OmniReader Pro mac功能特色

OmniReader Pro mac是一款文字识别和阅读软件&#xff0c;它可以将印刷体和手写体的文字转换为数字文本&#xff0c;并将其朗读出来。该软件适用于视力受损、阅读困难、语言障碍等用户&#xff0c;可以帮助他们更加轻松地获取信息和阅读文本。 OmniReader Pro具有简洁直观的用户…

almalinux centos8系统zlmediakit编译安装

脚本 # 安装依赖 gcc-c.x86_64 这个不加的话会有问题&#xff0c; cmake需要在线安装 sudo yum -y install gcc gcc-c libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg git openssl-devel gcc-c.x86_64 cmake mkdir -p /home/zenglg cd /home/zenglg git clon…

人工智能和网络安全:坏与好

人工智能似乎可以并且已经被用来帮助网络犯罪和网络攻击的各个方面。 人工智能可以用来令人信服地模仿真人的声音。人工智能工具可以帮助诈骗者制作更好、语法正确的网络钓鱼消息&#xff08;而糟糕的语法往往会暴露出漏洞&#xff09;&#xff0c;并将其翻译成多种语言&…

华为1+x网络系统建设与运维(中级)-练习题2

一.设备命令 LSW1 [Huawei]sys LSW1 同理可得&#xff0c;给所有设备改名 二.VLAN LSW1 [LSW1]vlan ba 10 20 [LSW1]int g0/0/1 [LSW1-GigabitEthernet0/0/1]port link-type trunk [LSW1-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20 [LSW1-GigabitEthernet0/0/1]in…

lxml 总结

xm 和 lxml库 哪个更好用点 1. 性能&#xff1a; lxml 通常比 xml.etree.ElementTree 更快。lxml 使用了 C 编写的底层解析器&#xff0c;因此在处理大型 XML 文档时可能更高效。 如果性能对你的应用很重要&#xff0c;特别是在处理大型 XML 文件时&#xff0c;选择 lxml 可能…

【web安全】CSRF漏洞攻击与防御

前言 总结&#xff0c;仅供学习。 csrf的理解 我们了解一个网站有修改信息&#xff0c;密码&#xff0c;添加删除管理&#xff0c;支付转账的功能之后。 通过抓包抓取对方修改操作的数据包样式&#xff0c; 然后在自己网站搭建一个指令。 当别人来访时&#xff0c; 如果…

C++基础 -30- 双目运算符重载

c的运算符如&#xff0c;只能实现标准的加法&#xff0c;无法让两个类的参数相加 通过运算符重载可以实现更高级的运算&#xff08;此处为类外重载&#xff09; 运算符重载(类内重载) #include "iostream"using namespace std;class data1 {public :int a;data1…