企业管理系统定制开发将JSON数据转换成JAVA的实体类

将JSON企业管理系统定制开发数据转换成JAVA的实体类

企业管理系统定制开发看了好多博客不如这个up讲的好

Json使用场景

首先说一下,有许多jar包都可以

1.Jackson

    <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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

泛型的处理

通用配置
在静态配置代码块中

2.阿里巴巴的FastJson的具体使用

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>
  • 1
  • 2
  • 3
  • 4
  • 5

1、序列化

1,问题1:不传参数时会把哪个字段消除,不会设置为null

如何解决

/**         * WriteMapNullValue指定序列化时包含null         */        String personStr = JSON.toJSONString(person, SerializerFeature.WriteMapNullValue);
  • 1
  • 2
  • 3
  • 4

2、问题2 : 日期化

时间格式不是我们想要的

{"addr":"河南","birthday":"2022-07-31T11:04:22.283","id":1,"name":null,"pwd":"123","registerDate":1659236662194,"websiteUrl":"com.edu.shengda"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

解决办法
在类的属性上添加注解

   @JSONField(format = "yyyy-MM-dd HH:mm:ss")    private Date registerDate;    @JSONField(format = "yyyy-MM-dd HH:mm:ss")    private LocalDateTime birthday;
  • 1
  • 2
  • 3
  • 4

打印结果

{"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"}
  • 1
  • 2

3、问题3 : 奇怪的$ref

[{"id":3,"name":"L4"},{"$ref":"$[0]"},{"$ref":"$[0]"}]
  • 1

如何解决

 /**         * DisableCircularReferenceDetect 开启禁用引用探测         */        String string = JSON.toJSONString(List,SerializerFeature.DisableCircularReferenceDetect);       
  • 1
  • 2
  • 3
  • 4
  • 5

3、问题3 : SerializeFilter定制处理

对属性和属性值在序列化前做定制处理

2、反序列化

1、问题1 当有泛型时

3、通用设置

测试的时候可以看一下

指定属性名

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

3.Google的Gjson

<dependency>      <groupId>com.google.code.gson</groupId>      <artifactId>gson</artifactId>      <version>2.8.2</version></dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发