json序列化工具(fastjson进行json的解析和序列化)

本文目录
- fastjson进行json的解析和序列化
- SQLAlchemy 对象进行 JSON 序列化,有什么好的方法
- 序列化json对象的三种方式
- 记一个Jackson与Hutool混用的坑
- 手机出现vconsole是怎么回事
fastjson进行json的解析和序列化
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
速度快:相对其他JSON库的特点是快
使用简单: api简单
功能完善:支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展
FastJson三个核心类
常用api
1、序列化特征数组
2、按写入序进行反序列化
SQLAlchemy 对象进行 JSON 序列化,有什么好的方法
继承 json.JSONEncoder
实现一个针对sqlalchemy返回类型的处理方式。
sqlalchemy的返回类型有大都有两种,一种是Model对象,一种是Query集合(只查询部分字段)。
针对这两种返回结果,都是来自同一中类型 sqlalchemy.orm.query.Query
所以针对Query做相应处理,让他返回一个dict
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class AlchemyJsonEncoder(json.JSONEncoder):
def default(self, obj):
# 判断是否是Query
if isinstance(obj, Query):
# 定义一个字典数组
fields =
# 定义一个字典对象
record = {}
# 检索结果集的行记录
for rec in obj.all():
序列化json对象的三种方式
序列化json对象即是把json对象转换成json字符串,通常情况下都是用JSON.stringify方法,其实还有另外两个库可以实现此需求,但它们之间有些区别。
上面的json对象qs.stringify序列化结果如下:
而JSON.stringify序列化结果如下:
总结:从以上简单的对比,我们可以发现qs库的这个方法用在get请求拼接url时特别好。
记一个Jackson与Hutool混用的坑
最近遇到一个问题,Hutool从4.1.7升级到4.6.8之后,使用feign调用出现错误:
Hutool会使用 JSONNull 来表示空值,而SpringCloud Feign默认使用的序列化是Jackson,在远程调用的过程中使用了Map,直接传入了Hutool的JSONObject,而该Map存在空值,所以存在JSONNull,最终导致错误。
使用DTO传递参数,总之就是不要直接把JSONObjct作为参数传递。
在使用JSON序列化工具的时候,尽量不要混合使用,即使存在多个JSON工具,也不把一个JSON工具的JSON对象直接用另一个JSON工具来处理,因为每个JSON工具都有自己的对JSON的处理,包括一些优化,如果混着用就会出问题,所以,在使用JSON工具处理JSON的时候不要混着使用多种JSON
这里吐槽下Hutool,null值处理的时候要小心,非空判断用 JSONObject.isNull ,不要自行处理:
手机出现vconsole是怎么回事
晚上8点用户反馈线上服务有问题,立即查日志发现从晚上6点开始突然有大量的错误结构报文请求后台。错误报文为非标准的json报文,错误报文的字符串缺失双引号,例如:
{
id:244,
key:bcd2978cfa24b9123325bb780a57e2b1,
outTradeNo:a2ceb251-68e5-459d-84f2-c787f184,
storeId:020109,
uid:400059,
}
初步判断是前端post请求传递的报文序列化出问题了。
本地测试前端代码,可以复现该问题。报文的组装如下:
exchange(id: string, storeId: string, uid: string, key: string): Observable《any》 {
let outTradeNo = Guid.newGuid();
const data = {
id: id,
storeId: storeId,
uid: uid,
key: key,
outTradeNo: outTradeNo
}
let body = JSON.stringify(data);
...
}
但是通过JSON.stringify序列化对象时,序列化后的内容错误,序列化的结果丢失了双引号且出现了换行符,如下图:
在这里插入图片描述
在这里插入图片描述
debugger查看JSON序列化工具,发现JSON工具多出了一个的变量,且值为vconsole.min.js。vconsole为调试工具,但很奇怪地出现在了JSON工具中,于是猜想JSON序列化出问题是不是vconsole的锅。

更多文章:
json序列化工具(fastjson进行json的解析和序列化)
2026年9月27日 01:10
完全二叉树是不是满二叉树(为什么说“满二叉树也是完全二叉树”)
2026年9月26日 19:20
inner join用法on后面多个条件(inner join的条件不可以用不等于吗)
2026年9月26日 16:50
php安装memcached扩展(memcached-tool怎么安装)
2026年9月26日 15:50
oracle是关系型数据库吗(Oracle是一种什么数据库管理系统)
2026年9月26日 14:30
volume按键是什么意思(电脑里面的volume是什么意思)
2026年9月26日 12:50




