@JsonProperty注解的使用

遇到一个问题,前端按照平常方式传给我json对象,属性名和我一致,我在controller层也按平常方式使用@RequestBody注解,用相应的实体类接收参数,但别人可以成功接到参数,而我的却不能,在实体类的成员变量上增加@JsonProperty("属性名"),就解决了问题

查了一下这个注解:

@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; 
    } 

测试一下

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("张三");  

       //使用writeValuesAsString的方法就可以把对角转化成json字符串。

        System.out.println(new ObjectMapper().writeValueAsString(student)); 
    } 
}

得到结果

{"name":"张三"} 

注意事项:类和父类必须都实现序列化后,才可以反序列化,类没有实现序列化,也可以使用此注解序列化

感觉这个注解的作用是:1.前端传参数过来的时候,使用这个注解,可以获取到前端与注解中同名的属性  2。后端处理好结果后,返回给前端的属性名也不以实体类属性名为准,而以注解中的属性名为准

 

 

有个疑问,不知道可以不以把接收前端来的参数看作序列化,返回给前端的参数时,当作反序列化?

 

posted @ 2019-07-17 14:26  Mop猎人  阅读(62894)  评论(0编辑  收藏  举报