@JsonProperty注解的使用

Wesley13
• 阅读 652

遇到一个问题,前端按照平常方式传给我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。后端处理好结果后,返回给前端的属性名也不以实体类属性名为准,而以注解中的属性名为准

@JsonProperty注解的使用

@JsonProperty注解的使用

@JsonProperty注解的使用

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

点赞
收藏
评论区
推荐文章
lucien-ma lucien-ma
2年前
注解和反射
注解和反射1.注解1.1什么是注解?注解和注释的差别在于注解可以被其他程序读取1.2内置注解@Override定义在java.lang.Override中,表示一个方法声明打算重写超类中的另一个方法声明@Deprecated定义在java.lang.Deprecated中,此注解可以用于修辞方法,属性,类,表示不鼓励程序员使用这样的
Easter79 Easter79
2年前
spring和JPA
Entity使用@Entity注解使javabean类成为实体类。一般使用@Id注解在成员变量或者其对应的get方法设置实体类的主键。例子:packagecom.hgf.jpa.domain;importjavax.persistence.Entity;importjavax
Stella981 Stella981
2年前
Json解析工具 @JsonIgnore 注解的使用
@JsonIgnoreProperties        此注解是类注解,作用是json序列化时将javabean中的一些属性忽略掉,序列化和反序列化都受影响。@JsonIgnore        此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。@JsonFo
Stella981 Stella981
2年前
Spring Boot快速入门(三):依赖注入
springboot使用依赖注入的方式很简单,只需要给添加相应的注解即可@Service用于标注业务层组件 @Controller用于标注控制层组件@Repository用于标注数据访问组件,即DAO组件 @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。然后在使用的地方使用@A
Stella981 Stella981
2年前
Spring Boot Jackson命名策略
在SpringBoot的Jackson中我们可以使用@JsonProperty对Java属性转Json字符串的key进行指定。那么,当批量处理统一类型的格式时,@JsonProperty就显得比较麻烦了。publicclassLoginUser{@JsonProperty("user_name")priv
Easter79 Easter79
2年前
Spring注解大全,汇总版
Spring使用的注解大全和解释注解解释@Controller组合注解(组合了@Component注解),应用在MVC层(控制层),DispatcherServlet会自动扫描注解了此注解的类,然后将web请求映射到注解了@RequestMapping的方法上。@Service组合注解(组合了@Component注解),应用在
Wesley13 Wesley13
2年前
1.1Spring Boot 环境配置和常用注解
SpringBoot常用注解:@Service:注解在类上,表示这是一个业务层bean@Controller:注解在类上,表示这是一个控制层bean@Repository:注解在类上,表示这是一个数据访问层bean@Component:注解在类上,表示通用bean,value不写默认就是类名首字母小写@Auto
Stella981 Stella981
2年前
SpringBoot2 学习10 Controller接收参数的方式
地址传值@PathVariable获取路径参数。即url/{id}这种形式。?传值@RequestParam获取查询参数。即url?name这种形式用注解@RequestParam绑定请求参数到方法入参当请求参数username不存在时会有异常发生,可以通过设置属性requiredfalse解决,例如:@R
Stella981 Stella981
2年前
EntityFrameworkCore 中实体的几种配置方法
EntityFramework有几种方式可实现数据库表与实体的关系配置(relationship)1.convention2.annotation3.fluentapi使用数据注解实体类通常是在Models目录下,直接在实体类上添加属性注解,比如Required/Key等.
Easter79 Easter79
2年前
SpringBoot2 学习10 Controller接收参数的方式
地址传值@PathVariable获取路径参数。即url/{id}这种形式。?传值@RequestParam获取查询参数。即url?name这种形式用注解@RequestParam绑定请求参数到方法入参当请求参数username不存在时会有异常发生,可以通过设置属性requiredfalse解决,例如:@R