Springboot中使用@JsonProperty和@JSONField
2个注解都是为了解决json字符串的某些属性名和JavaBean中的属性名匹配不上的问题。
例子,不使用注解的情况
@Data
public class Routine {private Integer TTS_voice;}
@PostMapping("/test8")public Routine test8(@RequestBody Routine routine){return routine;}
传递参数为null并且返回的结果字段名也不一致。(命名原因jackson会自动帮你转换)
1.@JsonProperty
该注解为jackson包下的,在starter-web启动器下已经存在。
使用方法,在bean属性或方法上加上该注解
@Data
public class Routine {@JsonProperty("TTS_voice")private Integer TTS_voice;}
测试(因为springboot默认的转换方式就是jackson所以不需要做配置)
在使用自定义getset方法时发现会出现重复字段,查看编译过后的@lombok发现生成的方法与自定义的无区别但是不会出现重复字段。
public class Routine {@JsonProperty("TTS_voice")private Integer TTS_voice;public Integer getTTS_voice() {return TTS_voice;}public void setTTS_voice(Integer TTS_voice) {this.TTS_voice = TTS_voice;}
}
出现重复字段解决办法,@JsonProperty改为加在get方法上
public class Routine {private Integer TTS_voice;@JsonProperty("TTS_voice")public Integer getTTS_voice() {return TTS_voice;}public void setTTS_voice(Integer TTS_voice) {this.TTS_voice = TTS_voice;}
}
2. @JSONField
该注解为fastjson包下的,导包
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.24</version></dependency>
启动类配置fastjson转换(如果仅仅是内部使用转换json字符串则不需要配置)
@Beanpublic HttpMessageConverters fastJsonHttpMessageConverters(){//1、先定义一个convert转换消息的对象FastJsonHttpMessageConverter fastConverter=new FastJsonHttpMessageConverter();//2、添加fastjson的配置信息,比如是否要格式化返回的json数据;FastJsonConfig fastJsonConfig=new FastJsonConfig();fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);//附加:处理中文乱码List<MediaType> fastMedisTypes = new ArrayList<MediaType>();fastMedisTypes.add(MediaType.APPLICATION_JSON_UTF8);fastConverter.setSupportedMediaTypes(fastMedisTypes);//3、在convert中添加配置信息fastConverter.setFastJsonConfig(fastJsonConfig);HttpMessageConverter<?> converter=fastConverter;return new HttpMessageConverters(converter);}
使用方法与@JsonProperty一致
@Data
public class Routine {@JSONField(name = "TTS_voice")private Integer TTS_voice;}
需要注意的是在使用这2个注解进行转换时必须使用相应的方法否则不起作用(fastjson、jackson)
fastjson忽略属性注解为@JSONField(serialize = false)
jackson忽略属性注解为@JsonIgnore
Springboot中使用@JsonProperty和@JSONField相关推荐
- SpringBoot之:SpringBoot中使用HATEOAS
HATEOAS是实现REST规范的一种原则,通过遵循HATEOAS规范,可以解决我们实际代码实现的各种个问题.作为java最流行的框架Spring 当然也会不缺席HATEOAS的集成. 本文将会通过一 ...
- SpringBoot 中使用 HATEOAS
简介 HATEOAS 是实现 REST 规范的一种原则,通过遵循 HATEOAS 规范,可以解决我们实际代码实现的各种个问题.作为 java 最流行的框架 Spring 当然也会不缺席 HATEOAS ...
- 在SpringBoot中使用Spring Session解决分布式会话共享问题
在SpringBoot中使用Spring Session解决分布式会话共享问题 问题描述: 每次当重启服务器时,都会导致会员平台中已登录的用户掉线.这是因为每个用户的会话信息及状态都是由session ...
- SpringBoot 中 JPA 的使用
前言 第一次使用 Spring JPA 的时候,感觉这东西简直就是神器,几乎不需要写什么关于数据库访问的代码一个基本的 CURD 的功能就出来了.下面我们就用一个例子来讲述以下 JPA 使用的基本操作 ...
- 难以想象SpringBoot中的条件注解底层居然是这样实现的
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://urlify.cn/bm2qqi Spr ...
- 面试:SpringBoot中的条件注解底层是如何实现的?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://urlify.cn/bm2qqi Spr ...
- springboot yml怎么建常量_【Java】SpringBoot 中从application.yml中获取自定义常量
由于这里我想通过java连接linux,connection连接需要host.port.username.password及其他路径等等.不想每次修改的时候都去改源文件,所以想写在applicatio ...
- Springboot中给图片添加文字水印
Springboot中给图片添加文字水印 工作中遇到给图片添加文字水印的需求,记录下来方便之后查阅 需求内容: 给一张图片添加指定文字水印,使一张图片上有多个水印内容,并且设定一个水印开关,可指定是否 ...
- 你知道如何在springboot中使用redis吗
特别说明:本文针对的是新版 spring boot 2.1.3,其 spring data 依赖为 spring-boot-starter-data-redis,且其默认连接池为 lettuce ...
最新文章
- R语言数据热力图绘制实战(基于原生R函数、ggplot2包、plotly包)
- 最长公共子序列(LCS问题)
- python中类的嵌套_python中的嵌套类 | 学步园
- flyway数据迁移_使用Flyway在Java EE中进行数据库迁移
- linux dd iflag oflag,centos – dd oflag =直接5倍速
- 红帽企业版linux 7.4更新启动,红帽Linux企业版7.4 淘汰Btrfs文件系统
- 自定义behavior-仿华为应用市场
- 实验一 分治与递归—整数划分 java实现
- AI智能双标题插件+内容伪原创插件集成
- 人声歌姬语音合成器+72个歌手音源拓展 – YAMAHA Vocaloid 5 ESV 5.0.3 + LIBRARIES MacOS
- PostGIS几何图形操作
- P7369 [COCI2018-2019#4] Elder 题解
- 图片怎样加贴纸?这些方法值得一试
- 十六.Elasticsearch Adjacency Matrix Aggregation
- 移动设备软件开发测试
- 安卓 View 开发 绘制尺子
- 巧算24点C语言程序设计,巧算24点??
- jconsole是否可以在生产环境使用_运用Jconsole监控JVM
- 02-微信小程序开发-模板与配置
- NTN(三) Timing