问题:
如果前端使用的参数是大写的而不是标准的驼峰式写法,那么后台在进行参数的交互的时候会出现参数接收不到的问题
如:前端使用 Title 而后端实体类中式title 这样是不统一的;
解决:两种方式 Jackjson 和 Fastjson
- Jackjson 方式:
通过@JsonProperty注解来解决比较方便,作用是把该属性的名称序列化(或者反序列化接收参数)为另外一个名称,如把trueName属性序列化为name,@JsonProperty(value="name")
如果注解放到属性上,则返回的时候既有大写也有小写,如下:
@JsonProperty("Ao")
private Integer Ao;
responseBody响应结果:{Ao:xxx,ao:xxx}
注解放在getter上完美解决,返回只有大写不再自动变为小写的问题。
@JsonProperty("Ao")
public Integer getAo() {
return Ao;
}
responseBody响应结果:{Ao:xxx}
- Fastjson方式(Fastjson定制属性的序列化和反序列化):
引用处:
https://github.com/alibaba/fastjson/wiki/JSONField
通过注解的方式来指定序列化和反序列化
//配置在get,set方法上
public class A {
private int id;
@JSONField(name="ID")
public int getId() {return id;}
@JSONField(name="ID")
public void setId(int value) {this.id = id;}
}
//配置在field上
public class A {
@JSONField(name="ID")
private int id;
public int getId() {return id;}
public void setId(int value) {this.id = id;}
}
// 使用format配置日期格式化
public class A {
// 配置date序列化和反序列使用yyyyMMdd日期格式
@JSONField(format="yyyyMMdd")
public Date date;
}