fastjson、jackson以及son-lib的使用
fastjson前言
fastJson是阿里巴巴出品的一个json序列化工具。
引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
对象创建
JSONObject object=new JSONObject();
常用方法
1:public static String toJSONString(Object object)
将对象序列化json字符串;
2:public static String toJSONString(Object object, SerializerFeature... features)
将对象序列化json字符串,并保留类特征,在将json字符串反序列化为对象时,序列化前必须用这个进行方法进行序列化,否则反序列化失败;
3:public static Object parse(String text)
将字符串反序列化为对象,若要反序列化为自己定义的对象,即向下强转,则必须使用ParserConfig.getGlobalInstance().addAccept("com.example.demo.entity.")
进行白名单设置
4:public static JSONObject parseObject(String text)
将json字符串序列化为json对象。
5:public Object put(String key, Object value)
添加键值对。
jackson前言
国外著名的json工具。
引入依赖
- jackson-core,核心包,提供基于"流模式"解析的相关 API,它包括 JsonPaser 和 JsonGenerator。 Jackson 内部实现正是通过高性能的流模式 API 的 JsonGenerator 和 JsonParser 来生成和解析 json。
- jackson-annotations,注解包,提供标准注解功能;
- jackson-databind ,数据绑定包, 提供基于"对象绑定" 解析的相关 API ( ObjectMapper ) 和"树模型" 解析的相关 API (JsonNode);基于"对象绑定" 解析的 API 和"树模型"解析的 API 依赖基于"流模式"解析的 API。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.4</version>
</dependency>
jackson-databind 依赖 jackson-core 和 jackson-annotations,当添加 jackson-databind 之后, jackson-core 和 jackson-annotations 也随之添加到 Java 项目工程中。在添加相关依赖包之后,就可以使用 Jackson。
创建对象
JsonMapper mapper=new JsonMapper();
常用方法
1:public String writeValueAsString(Object value) throws JsonProcessingException
将对象序列化json字符串;
2:public <T> T readValue(String content, Class<T> valueType)
将字符串转换为对应的对象;
readValue(String content, Class<T> valueType)
方法valueType必须和传入的content键完全对应,否则报错
常用注解
1:@JsonProperty
用于属性,把属性的名称序列化时转换为另外一个名称。示例:
- @JsonProperty("birth_ d ate")
private Date birthDate;
2:@JsonFormat
用于属性或者方法,把属性的格式序列化时转换成指定的格式。示例:
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm")
public Date getBirthDate();备注
JsonFormat注解和下面yml配置配合解决后端传入前端时间格式问题
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
- 前端传入后端时间格式问题
- @DateTimeFormat(pattern = "yyyy-MM-dd")
public Date getBirthDate();
3:@JsonNaming(value = PropertyNamingStrategy.UpperCamelCaseStrategy.class)
用于对象,将属性首字母格式化时转化为大写。示例:
- @JsonNaming(value = PropertyNamingStrategy.UpperCamelCaseStrategy.class)
public class RefundBHRequest implements Serializable {};
如果知道Object的具体对象是谁,可以进行强转,如(QueryRefundNumberRequest)object。
json-lib前言
Json-lib 是以前 Java 常用的一个 Json 库,最后的版本是 2.4,分别提供了 JDK 1.3 和 1.5 的支持。
引入依赖
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
创建对象
1:JSONObject object=new JSONObject()
: 创建普通的JSONObject对象;
2:JSONArray array=new JSONArray()
:创建数组对象
常用方法
1:JSONObject JSONObject.fromObject(student)
将Map,实体对象转成JSONObject对象;
2:JSONArray JSONArray.fromObject(list)
将List集合转成JsonArray数组对象;
3: public Object put(Object key, Object value)
对对象进行赋值;
4: public Object remove(String key)
根据key值移除key和value;
现已不推荐使用
参考
1.https://www.cnblogs.com/guanbin-529/p/11488869.html
2.https://blog.csdn.net/androidstarjack/article/details/106485213?utm_term=jsonlib不推荐使用&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-2-106485213&spm=3001.4430
Gitee地址
https://gitee.com/zhuayng/foundation-study.git
fastjson、jackson以及son-lib的使用的更多相关文章
- SpringBoot中使用Fastjson/Jackson对JSON序列化格式化输出的若干问题
来源 :https://my.oschina.net/Adven/blog/3036567 使用springboot-web编写rest接口,接口需要返回json数据,目前国内比较常用的fastjso ...
- json工具包比较 fastjson jackson gson
对json进行json-object进行相互转化时,笔者接触到三种工具jar,现对其进行比较. fastjson:速度最快,阿里巴巴开源. jackson:springMvc 默认使用. gson:谷 ...
- springmvc 用fasterxml.jackson返回son数据
一,引入fasterxm.jackson包 <dependency> <groupId>com.fasterxml.jackson.core</groupId> & ...
- 【SpringMVC】从Fastjson迁移到Jackson,以及对技术选型的反思
为什么要换掉fastjson 直接原因是fastjson无法支持注解形式的自定义序列化和反序列化,虽然其Github上的Wiki上说明是支持的.但是实测结果表明:Test类的序列化被fastjson的 ...
- jackson、fastjson、kryo、protostuff等序列化工具性能对比
简介 实际项目中,我们经常需要使用序列化工具来存储和传输对象.目前用得比较多的序列化工具有:jackson.fastjson.kryo.protostuff.fst 等,本文将简单对比这几款工具序列化 ...
- jackson JsonPropertyOrder和@JsonIgnoreProperties注解
有些时候,我们在和外部系统交互的时候使用了json作为标准的数据交换格式,同时为了安全性考虑,增加了对报文的校验,因此我们需要确保序列化的时候参数有序且不多不少刚好,因为对外的API不像后台和前端交互 ...
- springboot自定义消息转换器HttpMessageConverter Spring Boot - 使用Gson替换Jackson
Jackson一直是springframework默认的json库,从4.1开始,springframework支持通过配置GsonHttpMessageConverter的方式使用Gson. 在典型 ...
- fastjson 过滤不需要序列化的属性
JSON JSON英文全称为JavaScriptObject Natation,采用key:value键值对的方式存贮数据,与xml格式相比,JSON是一种轻量级的数据交换格式:不要被JavaScri ...
- 废弃fastjson!大型项目迁移Gson保姆级攻略
前言 大家好,又双叒叕见面了,我是天天放大家鸽子的蛮三刀. 在被大家取关之前,我立下一个"远大的理想",一定要在这周更新文章.现在看来,flag有用了... 本篇文章是我这一个多月 ...
- JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码
本文是<JVM 性能调优实战之:一次系统性能瓶颈的寻找过程> 的后续篇,该篇介绍了如何使用 JDK 自身提供的工具进行 JVM 调优将 TPS 由 2.5 提升到 20 (提升了 7 倍) ...
随机推荐
- Spring Boot 2 中的默认日志管理与 Logback 配置详解
Spring Boot在所有内部日志中使用Commons Logging,但是对底层日志的实现是开放的.在Spring Boot生态中,为Java Util Logging .Log4J2 和Logb ...
- Jmeter环境变量配置你不得不知道的事情
在安装Jmeter的过程中大家肯定需要配置环境,但是为什么要配置JDK的环境变量呢?大家有没有好奇过,有没有仔细去像一下呢,其实在安装Jmeter前,大家应该都知道Jmeter是我们JAVA开发的,J ...
- [平台建设] Spark任务的诊断调优
背景 平台目前大多数任务都是Spark任务,用户在提交Spark作业的时候都要进行的一步动作就是配置spark executor 个数.每个executor 的core 个数以及 executor 的 ...
- Sentry 企业级数据安全解决方案 - Relay 运行模式
内容整理自官方开发文档 Relay 可以在几种主要模式之一下运行,如果您正在配置 Relay server 而不是使用默认设置,那么事先了解这些模式至关重要. 模式存储在配置文件中,该文件包含 rel ...
- VUE3 之 键盘事件
1. 概述 老话说的好:宁愿自己吃亏,也不让他人吃亏. 言归正传,今天我们来聊聊 VUE3 的 键盘事件. 2. 键盘事件 2.1 敲击任意键触发事件 <body> <div id= ...
- 第10组 Beta冲刺 (3/5)(组长)
1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/14018630.html ·作业博客:https://edu.cnblogs.co ...
- HDU 1312 Red and Black (DFS & BFS)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312 题目大意:有一间矩形房屋,地上铺了红.黑两种颜色的方形瓷砖.你站在其中一块黑色的瓷砖上,只能向相 ...
- 【reverse】逆向6 JCC
[reverse]逆向6 JCC 前言 我们之前学习的时候讲了,eip寄存器存储的是当前(即将执行的语句的) 指向地址 而我们之前提到的下断点(F2),就和我们编程中的下断点一样,执行到某句汇编指令然 ...
- Solon Web 开发,八、校验、及定制与扩展
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- docker 修改容器env配置
docker 修改容器env配置 场景:修改zabbix数据库密码 zabbix容器构成: 数据库:zabbix-mysql server端:zabbix-server-mysql web端:zabb ...