FastJson序列号和反序列化范例(Java、Scala版)

本文详细介绍了使用FastJson进行序列化和反序列化的操作,包括Java和Scala两个版本。在Java部分,重点讲解了普通对象的序列化、日期的序列化与反序列化,以及反序列化复杂JSON字符串到多类型对象的方法。在Scala部分,涵盖了序列化和反序列化的基本应用。
摘要由CSDN通过智能技术生成

目录

1. Java版

1.1 序列化

        1.1.1 序列化一个普通对象

        1.1.2 序列化和反序列化日期

1.2 反序列化

1.3 一些其他常用函数

2. Scala版

2.1 序列化

2.2 反序列化


 

1. Java版

1.1 序列化

1.1.1 序列化一个普通对象

存在空值时,有两种处理方法。

// 正常对象
User u = new User();
u.setName("王五");
u.setAge(30);

System.out.println(JSON.toJSONString(u));
// 输出结果 {"age":30,"name":"王五"}
 

// 存在空值的对象
User u1 = new User();
u1.setAge(30);

System.out.println(JSON.toJSONString(u1,SerializerFeature.WriteMapNullValue)); 
// 输出null,输出结果 {"age":30,"name":null}

System.out.println(JSON.toJSONString(u1,SerializerFeature.WriteNullStringAsEmpty)); 
// 输出"",输出结果 {"age":30,"name":""}

1.1.2 序列化和反序列化日期

Date date = new Date();
 
String dateString = JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd HH:mm:ss");
System.out.println(dateString);
 
// 输出结果 "2018-08-03 09:44:21"
 
String dateString1 = "{\"time\":\"2018-08-01 22:22:22\"}";
System.out.println(JSON.parseObject(dateString1));
 
// 输出结果 {"time":"2018-08-01 22:22:22"}

1.2 反序列化

反序列化一个复杂的JSON字符串。得到一个

fastjson 2.0.0本提供了多种反序列化配置,可以通过配置来控制反序列化的行为,以增强安全性和灵活性。以下是常见的反序列化配置: 1. AutoType:开启该配置后,fastjson将支持反序列化任何Java,包括未知的、不在白名单中的。这个配置存在安全隐患,因为攻击者可以通过构造恶意的JSON字符串来执行任意代码。因此,建议仅在必要时才开启该配置,并通过白名单过滤掉非法。 2. ParserConfig:该配置用于管理反序列化时的解析器配置,包括白名单、黑名单、自定义反序列化器等。通过ParserConfig可以实现更精细的反序列化控制。 3. Feature:该配置用于开启或关闭fastjson的一些特性,如自动型匹配、允许注释、允许单引号等。通过Feature可以灵活地控制反序列化的行为。 4. ASM:该配置用于开启或关闭fastjson的ASM字节码增强功能,以提高反序列化性能。默认情况下,fastjson会尝试使用ASM来优化反序列化代码,但在某些环境下可能会造成兼容性问题。 5. SerializeConfig:该配置用于序列化时的配置管理,包括白名单、黑名单、自定义序列化器等。通过SerializeConfig可以实现更精细的序列化控制。 这些配置可以通过调用JSON的静态方法来设置,例如: ``` JSON.DEFAULT_PARSER_FEATURE |= Feature.AutoCloseSource.getMask(); JSON.DEFAULT_PARSER_FEATURE &= ~Feature.UseBigDecimal.getMask(); ``` 注意,反序列化配置应该根据具体情况进行选择和设置,以确保安全和性能。建议仔细阅读fastjson的官方文档,并参考相关的安全规范和最佳实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值