遇到一个问题,前端按照日常方式传给我json对象,属性名和我一致,我在controller层也按日常方式使用@RequestBody注解,用相应的实体类接收参数,但别人能够成功接到参数,而个人却不能,在实体类的成员变量上增长@JsonProperty("属性名"),就解决了问题前端
查了一下这个注解:json
@JsonProperty 此注解用于属性上,做用是把该属性的名称序列化为另一个名称,如把trueName属性序列化为name,@JsonProperty("name")。后端
import com.fasterxml.jackson.annotation.JsonProperty;
public class Student implements Serializable{
@JsonProperty("name")
private String trueName;
public String getTrueName() {
return trueName;
}
public void setTrueName(String trueName) {
this.trueName = trueName;
}
} app
测试一下测试
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
public class Main {
public static void main(String[] args) throws JsonProcessingException {
Student student = new Student();
student.setTrueName("张三"); this
//使用writeValuesAsString的方法就能够把对角转化成json字符串。xml
System.out.println(new ObjectMapper().writeValueAsString(student));
}
}对象
获得结果blog
{"name":"张三"} 字符串
注意事项:类和父类必须都实现序列化后,才能够反序列化,类没有实现序列化,也能够使用此注解序列化
感受这个注解的做用是:1.前端传参数过来的时候,使用这个注解,能够获取到前端与注解中同名的属性 2。后端处理好结果后,返回给前端的属性名也不以实体类属性名为准,而以注解中的属性名为准
有个疑问,不知道能够不以把接收前端来的参数看做序列化,返回给前端的参数时,看成反序列化?