技术标签: spring boot json 后端
相信大家都有跟外部公司对接的经历,而只要跟外部对接不可避免地就会存在沟通上的不便利,比如说联调时发现两边属性有大小写的区别。
但是理论上开发前自己沟通不会出现这种问题,但是我最近遇到一个比较奇葩的对接,涉及三方对接,我的接口文档早就发出去了,然后我这边接口也是按照文档提供的属性字段定义的,代码也已经写完,然而到了对接的时候,对方说他跟另一方已经对接完,说我提供的文档有很多大小写不一致(那你早干嘛去了。。。文档都发出来个把星期了),虽然心里一万个不愿意,但是谁叫别人是甲方呢,忍忍还是自己改吧。
那么问题来了,实体与数据库已经建好了,再去改实体属性或者数据库字段显得很麻烦,那么有没有很简单的办法呢?
当然有,jackson包和fastjson包都提供了相应的办法解决。废话不多说,接下来直接说这两者的用法吧!
1.@JsonProperty注解方式
@JsonProperty注解是annotation包下的一个注解,可以通过value属性定义注解修饰的属性名称,如果你用的是@JsonProperty注解,那么你千万不要用JSONObject.toJSONString(实体)去转json,可能很多人在这里就蒙蔽了,为什么网上复制过来的转换不了,实际上很多文章只是复制粘贴,根本没有实际执行过,JSONObject.toJSONString(实体)实际上是fastjson包里面的方法,他不会处理@JsonProperty上设置的“别名”。正确的写法是:ObjectMapper().writeValueAsString(实体类)。
2.@JSONField注解方式
另外一种方法就是用fastjson包提供的@JSONField(当然这个注解还有很多其他功能,比如格式化时间等,这里不做阐述)。如果用了此注解的属性(或者set方法),那就需要用JSONObject.toJSONString(实体)(或者JSONObject.toJSONString(实体))。
示例代码:
public class SerializeTest {
@JSONField(name = "gender")
private String sex = "男";
@JsonProperty(value = "name")
private String userName = "张三";
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public SerializeTest() {
}
public static void main(String[] args) throws Exception{
String string = new ObjectMapper().writeValueAsString(new SerializeTest());
System.out.println(string);
String jsonString = JSONObject.toJSONString(new SerializeTest());
System.out.println(jsonString);
}
}
-----------------------------------------------
-----------------------------------------------
运行结果:
JsonProperty序列化:{"sex":"男","name":"张三"}
JSONField序列化:{"gender":"男","userName":"张三"}
另外补充一个知识:spring框架的@RequestBody默认使用fasterxml中的converter方法将body中的json转换为对象 所以应该使用@JsonProperty注解。
目录简介注册BlockHandler和WakeupHandlerRegisterBlockAndWakeupHandlers注册到Screen注册InputHandler注册GeneralHandlerHandler的执行BlockHandler函数WakeupHandler函数xf86Wakeup函数简介Xorg Handler用于处理各种类型的回调函数,Xorg一共支持四种类型的Handl..._registerblockandwakeuphandlers
处理修改Anaconda文件夹只读权限后自动恢复的问题
企业文化和管理能力看起来不是同一层面的东西,实际上两者是息息相关的,不同公司的企业文化决定了你必须拥有不同层次的管理能力。 由于我只在软件公司和互联网公司工作过,所以本文基本上只面对IT型公司,因为我没去过阿里、google等国际型大公司,所以本文讲的不一定对,请用批判的眼光谨慎阅读: 这里我们先讲企业文化: 啥叫企业文化?个人认为:那就是由公司第一任领导(通常是老板)在创立
转载于:https://www.cnblogs.com/lonecloud/p/5740098.html
最近在搞达梦数据库,jdk为1.8,达梦数据库是DM8,达梦的方言包是最新的5.3。然后遇到问题:达梦的方言包不能解析,解决不了,愁。有遇到的可以一起讨论一下。_达梦数据库缺少方言
都是图 清晰可见_切比雪夫多项式 最佳逼近
numpy数组切片传入索引与删除指定索引的行列最近准备数据集,需要用到两个numpy的技巧,记录一下:数组中切片传入索引a = np.arange(20).reshape((4,5))print(a)b = a[[1,2,3,0],[2,3,2,0]]print(b)[[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14] [15 16 17 18 19]] [ 7 13 17 0]第一个列表代表的是点的行,第二个列表代表的是点的列
XML基础 目录 XML基础... 1 一、 表单提交方式... 2 1.1 使用submit提交:... 2 1.2 Button提交方式... 2 1.3 超链接提交方式... 2 1.4 常用事件... 2 二、 Xml的简介... 2 2.1 Xml全称... 2 2.2 X..._xml 基础
捕获到becl字符串:$$BCEL$$$l$8b$I$A$A$A$A$A$A$AmT$5bS$d3$40$U$fe$b6$84$$$84p$z$I$I$w$e0$85$C$z$I$e2$8d$9b$I$82$a2$F$R$Q$c5$eb$a4$e9$C$c16$e9$q$a9$c2$m$bf$c7g$7c$u$8e$cc$f8$e8$83$bf$c3g$7f$81$p$9eM$81$c2$90d$b2$9bs$be$_g$bfs$f6l$7e$fd$fb$fe$D$c0$A$de$ab$a8$c3u$_$$bcel$$$l$8b$i$a$a$a$a$a$a$a$9d$7b$e7w$pw$96$df$83$9ajr$dd$ad$d6$88$p$cdl$e
MySQL卸载# 检查是否安装mysqlrpm -qa|grep -i mysql# 查看mysql状态service mysql status./mysql status# 停止mysqlservice mysql stop./mysql stop# 卸载mysql组件rpm -ev MySQL-devel-5.6.23-1.linux_glibc2.5# 查找muysql安装目录whereis mysqlmfind / -name mysql# 删除文件rm -rf /us_glibc安装mysql怎么卸载
hive常用函数_三只喵爪
非接触、tof测距 TOF介绍 TOF模块也分很多种类,在这里我使用的是TOF200F这一款。在我看来各个种类的区别无非就是有效测量距离的不同而已,不管是配置还是测距原理都大同小异。如果有用到的话,可以根据需要购买适合自己使用的模块。下面是各类模块的选型表,因为工作需要,需要测量30cm以上的距离,又想要高精度,所以就用了TOF200F。TOF工作模式..._tof测距模块