看了好多博客不如这个up讲的好
完全搞懂

首先说一下,有许多jar包都可以
<properties>
<!--json 版本号-->
<jackson.version>2.8.7</jackson.version>
</properties>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
通用配置
在静态配置代码块中

Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。
无依赖,不需要例外额外的jar,能够直接跑在JDK上。
FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。
FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.21</version>
</dependency>


如何解决
/**
* WriteMapNullValue指定序列化时包含null
*/
String personStr = JSON.toJSONString(person, SerializerFeature.WriteMapNullValue);

时间格式不是我们想要的
{"addr":"河南",
"birthday":"2022-07-31T11:04:22.283",
"id":1,
"name":null,
"pwd":"123",
"registerDate":1659236662194,
"websiteUrl":"com.edu.shengda"}
解决办法
在类的属性上添加注解
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date registerDate;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime birthday;
打印结果
{"addr":"河南","birthday":"2022-07-31 11:07:27","id":1,"name":null,"pwd":"123","registerDate":"2022-07-31 11:07:27","websiteUrl":"com.edu.shengda"}
[{"id":3,"name":"L4"},{"$ref":"$[0]"},{"$ref":"$[0]"}]
如何解决
/**
* DisableCircularReferenceDetect 开启禁用引用探测
*/
String string = JSON.toJSONString(List,SerializerFeature.DisableCircularReferenceDetect);
对属性和属性值在序列化前做定制处理
测试的时候可以看一下

指定属性名

指定不参与序列化和反序列化的字段

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>