前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【json】Jackson的使用

【json】Jackson的使用

作者头像
全栈程序员站长
发布于 2022-07-21 05:07:15
发布于 2022-07-21 05:07:15
61800
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

Jackson所有的操作都是通过ObjectMapper对象实例来操作的,可以重用这个对象实例。

首先定义一个实例: ObjectMapper mapper = new ObjectMapper();

定义一个Student类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 package jackson; import java.util.Date; public class Student { private String name; private int age; private String position; private Date createTime; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getPosition() { return position; } public void setPosition(String position) { this.position = position; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } @Override public String toString() { return "Student [name=" + name + ", age=" + age + ", position=" + position + ", createTime=" + createTime + "]"; } }

准备一个字符串: String jsonString = "{\"name\":\"king\",\"age\":21}";

常规操作: 字符串转对象
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 mapper.readValue(jsonString,Student.class); System.out.println(student);

打印输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Student [name=king, age=21, position=null, createTime=null]
常规操作: 对象转字符串
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 student.setCreateTime(new Date()); String json = mapper.writeValueAsString(student); System.out.println(json);

打印输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"name":"king","age":21,"position":null,"createTime":1524819355361}
如何改变输出的日期字段格式?

两种方式:一种SimpleDateFormat,另外一种通过在属性字段注解 在Student.java属性字段createTime注解@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 import com.fasterxml.jackson.annotation.JsonFormat; public class Student { private String name; private int age; private String position; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; //省略get,set } 

打印输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"name":"king","age":21,"position":null,"createTime":"2018-04-27 09:00:56"}
8小时时间差问题:上面打印结果发现,时间少8小时。
解决方法: 注解上增加时区。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Student { private String name; private int age; private String position; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; //省略get,set }

打印输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"name":"king","age":21,"position":null,"createTime":"2018-04-27 17:07:33"}
其他的一些奇怪的配置

输出格式化,就是分行显示,该功能:java mapper.configure(SerializationFeature.INDENT_OUTPUT, true); 打印输出样式{ "name" : "king", "age" : 21, "position" : null, "createTime" : "2018-04-27 17:29:01" }

3.其他注解 @JsonIgnore 用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。 @JsonIgnoreProperties(ignoreUnknown = true) 将这个注解写在类上之后,就会忽略类中不存在的字段 @JsonIgnoreProperties({ "internalId", "secretKey" }) 将这个注解写在类上之后,指定的字段不会被序列化和反序列化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
`objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE,true);` ***添加这个配置后,输出时自动将类名作为根元素。***

````输出如下:
`{"Student":{"name":"king","age":21,"position":null,"createTime":"2018-05-02 10:06:29"}}`
````

 `@JsonRootName("myPojo")` ***将这个注解写在类上之后,根据指定的值生成根元素,作用类似于上面***

(博客园的这个markdown编辑器真不会用)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/107556.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
3种 Springboot 全局时间格式化方式,别再写重复代码了
时间格式化在项目中使用频率是非常高的,当我们的 API 接口返回结果,需要对其中某一个 date 字段属性进行特殊的格式化处理,通常会用到 SimpleDateFormat 工具处理。
程序员小富
2020/09/02
2.4K0
3种 Springboot 全局时间格式化方式,别再写重复代码了
Jackson详解
其中 jackson-databind内部依赖了jackson-annotations与ackson-core,故只导入jackson-databind即可
冬天vs不冷
2025/01/21
2640
Jackson详解
放弃FastJson!一篇就够,Jackson的功能原来如此之牛(万字干货)
在上篇《经过多方调研,最终还是决定禁用FastJson!》中,讲了FastJson的基本使用以及存在的不确定性问题,所以最终决定在项目中放弃使用,进而选择市面上比较主流,Spring Boot默认绑定的JSON类库:Jackson。
程序新视界
2021/03/02
4K0
Jackson快速入门
Java生态圈中有很多处理JSON和XML格式化的类库,Jackson是其中比较著名的一个。虽然JDK自带了XML处理类库,但是相对来说比较低级,使用本文介绍的Jackson等高级类库处理起来会方便很多。
乐百川
2019/05/29
3.3K0
Jackson快速入门
放弃fastjson,拥抱Jackson
最近由于阿里的fastjson频繁爆出安全漏洞,为了避免后续升级上线的烦恼,决定弃用fastjson,使用Jackson,把现有项目中的fastjson都换成了Jackson,由于很多写法上有些不同,所以在这里把这些改过的东西做一下笔记。
大数据技术与应用实战
2020/09/15
1.5K0
E027Web学习笔记-Ajax和JSON
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML);
訾博ZiBo
2025/01/06
1120
E027Web学习笔记-Ajax和JSON
SpringMVC—json
要实现从JSON字符串转换为JavaScript 对象,使用 JSON.parse() 方法:
Java架构师必看
2021/05/14
9460
SpringMVC—json
中篇|Jackson注解的用法和场景,建议收藏
用于序列化和反序列化中特定格式的数据。虽然我们经常使用它来格式化时间,但是它不单单能格式化时间。
码农小胖哥
2021/07/22
2.2K0
除了FastJson,你也应该了解一下Jackson(二)
上一篇文章介绍了Jackson中的映射器ObjectMapper,以及如何使用它来实现Json与Java对象之间的序列化和反序列化,最后介绍了Jackson中一些序列化/反序列化的高级特性。而本文将会介绍Jackson中的一些常用的(序列化/反序列化)注解,并且通过示例来演示如何使用这些注解,从而来提高我们在处理Json上的工作效率。
东溪陈姓少年
2020/08/06
1.7K0
【安全研究】Jackson 学习笔记
Jackson框架是基于Java平台的一套数据处理工具,被称为"最好的Java Json解析器",目前Jackson主要有1.x和2.x两个分支版本,其中1.x的类库中包命名以org.codehaus.jackson.xxx开头,2.x类库中包命令com.fastxml.jackson.xxx开头,Jackson框架包含以下3个核心库:
Al1ex
2023/03/29
1.9K0
【安全研究】Jackson 学习笔记
jackson第二篇
请求远程的API,获得远程服务的JSON响应结果,并将其转换为Java POJO对象。
关忆北.
2020/10/15
5320
重学springboot系列之JSON处理工具类
fastjson为人诟病的问题:虽然fastjson速度上有一定的优势,但是其为了追求速度,很大程度放弃了JSON的规范性。因此还时不时的在有些版本中暴露安全问题。大家如果有机会去看一下fastjson的github代码,其代码质量不是很高。所以用不用fastjson在国内软件界还是有争议的,在国外基本没人用。
大忽悠爱学习
2021/12/07
2.5K0
重学springboot系列之JSON处理工具类
Fastxml 简单常用注解学习笔记
更多详见:http://blog.csdn.net/sdyy321/article/details/40298081
干货满满张哈希
2021/04/12
1.2K0
设置Springboot返回jackson数据序列化
LocalDateTime格式化 使用下面的配置相当于全局配置就不需要给字段添加@JsonFormat(pattern = DateUt.YYYY_MM_DD_HH_MM_SS) 如果个别字段需要不同的配置可使用@JsonFormat(pattern = DateUt.YYYY_MM_DD),@JsonFormat会优先使用,反序列化亦可使用@JsonFormat注解
FHAdmin
2021/08/25
9230
SpringBoot 中 Json 格式化配置
SpringBoot 针对 jackson 是自动化配置的,如果需要修改,也可以自定义配置。
BUG弄潮儿
2021/10/08
3.1K0
SpringBoot 中 Json 格式化配置
特殊数据格式处理-JSON框架Jackson精解第2篇
Jackson是Spring Boot默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库。有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的,没有这种限制。它提供了很多的JSON数据处理方法、注解,也包括流式API、树模型、数据绑定,以及复杂数据类型转换等功能。它虽然简单易用,但绝对不是小玩具,本节为大家介绍Jackson的基础核心用法,更多的内容我会写成一个系列,5-10篇文章,请您继续关注我。
字母哥博客
2020/09/23
1.9K0
特殊数据格式处理-JSON框架Jackson精解第2篇
Jackson,最牛掰的 Java JSON 解析器
在当今的编程世界里,JSON 已经成为将信息从客户端传输到服务器端的首选协议,可以好不夸张的说,XML 就是那个被拍死在沙滩上的前浪。
沉默王二
2020/12/15
1.9K0
真没想到,Springboot能这样做全局日期格式化,有点香!
最近部门几位同事受了一些委屈相继离职,共事三年临别之际颇有不舍,待一切手续办妥帖,寒暄过后送他们出公司,几个老哥临别时冲我鬼魅一笑,我顿时心里一紧有种不好的预感,这事绝对没有这么简单。等我接手这几个大佬的项目后,应验了我的预感,此刻我居然有点后悔,为啥送别之时没揍他们一顿!哈哈哈~ 而这种打人的冲动,在我开始优化几位老哥的项目时候,变得越来越强烈。
程序员小富
2020/04/13
1.2K0
jackson序列化和反序列化中的注解和扩展点大全【收藏】
通过在属性、getter 方法或类级别上使用 @JsonSerialize 注解,可以指定要使用的序列化器。
公众号:码到三十五
2024/03/19
3.7K0
Jackson 解析 JSON 详细教程
JSON 对于开发者并不陌生,如今的 WEB 服务、移动应用、甚至物联网大多都是以 JSON 作为数据交换的格式。学习 JSON 格式的操作工具对开发者来说是必不可少的。这篇文章将介绍如何使用 Jackson 开源工具库对 JSON 进行常见操作。
未读代码
2022/11/21
3.1K0
Jackson 解析 JSON 详细教程
相关推荐
3种 Springboot 全局时间格式化方式,别再写重复代码了
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验