使用jackson来处理实体类
1、常用框架:阿里fastjson,谷歌gson等
在大量数据情况下对比性能:
Jackson > fastjson > Gson > Json-lib。
2、在现在的开发中,会有很多调用接口的情况
比如前后台分离采用json格式,或者调用第三方API等。
小编就以User为例,来讲几个例子:
实体类
user实体
controller
返回结果
可以看见User整个信息都被暴露出去了,密码、手机号、而且生日的格式还是原生的。
如何处理呢?
我们可以使用@JsonIgnore来忽略某个字段
JsonIgnore
使用@JsonFormat来格式化日期
JsonFormat
出于安全考虑,不让别人猜出我们的实体字段来映射出数据库字段,我们还可以使用
@JsonProperty来起别名
JsonProperty
说这几个常用的,还有比如@JsonInclude(JsonInclude.Include.NON_NULL)空字段不返回,大家可以问问度娘,百度jackson注解。
Springboot Jackson的操作
有一段时间没写博客了,虽然是菜鸟一枚但毕竟总要有东西记录学习的,我相信有志者事竟成。今天在工作中使用Jackson转换了一个javabean,传到测试服上之后发现日期少了一天,使用的是@JsonFormat注解。
这里写了一个简单的小demo记录一下
表数据:
实体类属性:
controller层就省略掉了,就是调用dao进行数据查询。
使用postman请求结果如下:
发现时间是2018/11/15,但数据库中是2018-11-16,少了一天,原因是在进行日期格式化的时候没有加入要格式化日期的时区,中国的时区是东八区,
需要加入timezone="GMT+8"
再次测试:
这次就可以了!
另外还有几个常用的注解:
@JsonIgnore
: 在转换的时候忽略该字段;@JsonProperty
:将该字段的名称在转换成json格式后以该名称显示;@JsonIgnorePeroperty({"id","name"})
:忽略该注解所包含的全部属性,里面的参数是一个数组,会把包含的名称的全部字段都忽略掉,包括子类;@JsonInclude(Include.NON_EMPTY)
:在属性不为空时序列化此字段,对于字符串,即null或空字符串;
用到的暂时就这些了。以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。