《Java工程师必读手册》——Java单元测试系列——Java单元测试技巧之JSON序列化(4)

简介: 《Java工程师必读手册》——Java单元测试系列——Java单元测试技巧之JSON序列化(4)

接上篇:https://developer.aliyun.com/article/1227488?spm=a2c6h.13148508.setting.28.48e04f0eaBVGWH


六、 JSON序列化技巧

 

这里以Fastjson为例,介绍一些JSON序列化技巧。

 

1. 序列化对象

 

利用JSON.toJSONString方法序列化对象:

 

image.png 

 

2. 序列化数组

 

利用JSON.toJSONString方法序列化数组:

 

image.png 

 

3. 序列化集合

 

利用JSON.toJSONString方法序列化集合(继承至Collection,比如List、Set等集合):

 

image.png 

 

4. 序列化映射

 

利用JSON.toJSONString方法序列化映射:

 

image.png 

 

其中,为了保证每次序列化的映射字符串一致,需要指定序列化参数MapSortField进行排序。

 

5. 序列化模板对象

 

利用JSON.toJSONString方法序列化模板对象:

 

image.png 

 

6. 序列化指定属性字段

 

利用JSON.toJSONString方法序列化指定属性字段,主要通过设置属性预过滤器(SimplePropertyPreFilter)的包含属性字段列表(includes)实现。主要应用于只想验证某些字段的情况,比如只验证跟测试用例有关的字段。

 

指定所有类的属性字段

 

利用JSON.toJSONString方法序列化指定所有类的属性字段:

 

image.png 

 

指定单个类的属性字段

 

利用JSON.toJSONString方法序列化指定单个类的属性字段:

 

image.png 

 

指定多个类的属性字段

 

利用JSON.toJSONString方法序列化指定多个类的属性字段:

 

image.png 

 

7. 序列化字段排除属性字段

 

利用JSON.toJSONString方法序列化过滤属性字段,主要通过设置属性预过滤器(SimplePropertyPreFilter)的排除属性字段列表(excludes)实现。主要应用于不想验证某些字段的情况,比如排除无法验证的随机属性字段。

 

排除所有类的属性字段

 

利用JSON.toJSONString方法序列化排除所有类的属性字段:

 

image.png 

 

排除单个类的属性字段

 

利用JSON.toJSONString方法序列化排除单个类的属性字段:

 

image.png 

 

排除多个类的属性字段

 

利用JSON.toJSONString方法序列化排除多个类的属性字段:

 

image.png 

 

8. 自定义序列化

 

对应一些类对象,需要序列化为特殊格式文本,就必须自定义序列化器。比如:Geometry序列化文本,通常采用WKTWell-known text表示,便于用户快速阅读理解。

 

全局配置序列化器

 

通过JSON序列化全局配置指定类序列化器:

 

image.png 

 

注意

这种方式不支持类继承,必须指定到具体类。比如要序列化Point对象,就必须配置Point类的序列化器。

 

特定配置序列化器

 

通过JSON序列化特定配置指定类序列化器:

 

image.png 

 

注意

这种方式不支持类继承,必须指定到具体类。比如要序列化Point对象,就必须配置Point类的序列化器。

 

注解配置序列化器

 

通过JSON序列化注解配置指定类序列化器:

 

image.png 

 

其中:GeometrySerializer为自定义类,这里就不贴出具体实现了。


  接下篇:https://developer.aliyun.com/article/1227482?groupCode=java

 

相关文章
|
2天前
|
Java 测试技术 Maven
JAVA单元测试概念与实战
单元测试是软件开发中的一个测试方法,用于验证软件代码中最小的、独立的单元是否按照预期工作。在Java中,这通常指的是单个的方法或者一个类的个别功能。单元测试的目的是隔离代码的每个部分,并确保各个部分是正确的。
19 4
|
1月前
|
存储 算法 Java
从零开始学习 Java:简单易懂的入门指南之IO序列化、打印流、压缩流(三十三)
从零开始学习 Java:简单易懂的入门指南之IO序列化、打印流、压缩流(三十三)
|
6天前
|
IDE Java 测试技术
使用Java进行单元测试:实践与技巧
使用Java进行单元测试:实践与技巧
|
6天前
|
测试技术 Python
Python中的单元测试与测试驱动开发(TDD)实践
Python中的单元测试与测试驱动开发(TDD)实践
|
26天前
|
缓存 测试技术 持续交付
工程化测试:Apollo的单元测试与集成测试指南
工程化测试:Apollo的单元测试与集成测试指南
|
1月前
|
测试技术 持续交付
探索单元测试和 E2E 测试:提升软件质量的关键步骤(下)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(下)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(下)
|
1月前
|
测试技术
探索单元测试和 E2E 测试:提升软件质量的关键步骤(上)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(上)
探索单元测试和 E2E 测试:提升软件质量的关键步骤(上)
|
1月前
|
JSON fastjson 数据库
字符编码导致Rapidjson(腾讯开源的json解析库)到Fastjson(阿里开发的Java json解析库)转换失败的原因分析
最近在客户端的开发的过程中,使用到了RapidJson,公司的开发是客户端和数据库端都由不同的人进行开发,我负责的客户端的逻辑开发(使用c++),开发工具同时使用了VS2017和QT的编译环境,使用QT主要是为了客户端界面开发方便,而使用了VS环境主要是维护公司开发的数据库接口库,这个库的唯一作用就是作为一个中间桥梁,使用Rapidjson将数据库接口的json数据格式解析为结构体数据,从而在客户端界面进行展示,或者接收客户端的数据,使用Rapidjson将其转换为json数据,发送给数据库接口以保存数据使用 。不太明白的可以参考我上一篇文章说明Rapidjson的使用过程-Parse解析数组
22 0
|
1月前
|
测试技术 开发者 Python
Python自动化测试与单元测试框架:提升代码质量与效率
在软件开发过程中,测试是不可或缺的环节。Python作为一门广泛应用的编程语言,拥有丰富的自动化测试和单元测试框架,例如unittest和pytest。本文将介绍Python自动化测试的重要性,并深入探讨这两个主流的单元测试框架的特点、使用方法以及优势。通过学习和应用这些框架,开发者可以提高代码质量、提升开发效率,并确保软件在不断迭代中保持稳定。
|
1月前
|
测试技术 Python
Python自动化测试与单元测试框架
自动化测试在软件开发中扮演着重要的角色,可以减少人工测试的时间和成本,提高软件质量。而Python作为一种流行的编程语言,其丰富的库和框架可以让测试变得更加容易和高效。本文将介绍Python自动化测试和单元测试框架,包括unittest和pytest的使用方法、优点和缺点,以及如何根据项目需求选择合适的框架。