跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 卖家故事 > @JsonProperty 前端传参数名和后端参数名不一样 入参 出参 映射 注解 springboot springmvc

@JsonProperty 前端传参数名和后端参数名不一样 入参 出参 映射 注解 springboot springmvc

时间:2024-04-14 10:25:33 来源:网络cs 作者:晨起 栏目:卖家故事 阅读:

标签: 参数  映射  注解 
阅读本书更多章节>>>>

省流:

使用 @JsonProperty

public class Product{    @JsonProperty("productName")    private String name;}

前端传productName,后端使用 @JsonProperty 转换一下。

返回也是一样。如果出参也用这个对象,出参用的是 @JsonProperty 里的字段名。前端拿到的是productName。

一、解读 

@JsonProperty 位于 com.fasterxml.jackson.annotation 

依赖如下 

<dependency>     <groupId>com.fasterxml.jackson.core</groupId>         <artifactId>jackson-databind</artifactId>     <version>2.5.3</version></dependency>    

常用到jackson的注解:

@JsonProperty、@JsonIgnore、@JsonIgnoreProperties、@JsonFormat

1、@JsonProperty

常用写法:@JsonProperty("xxx"),一般标记在字段上。指定入参和出参的字段名。

2、@JsonIgnore

一般标记在字段或者方法上,返回的json数据即不包含该字段。

3、@JsonIgnoreProperties

类注解,作用是json序列化时将java bean中的一些字段忽略掉,序列化和反序列化都受影响。

4、@JsonFormat

用于字段或者方法上(最好是字段上),将字符串的时间转换成Date类型。需要前端提交的是json格式数据,即ajax提交。

写法:@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GTM+8")

二、案例
 

@Data@JsonIgnoreProperties(value = { "entryDate", "leaveDate" })public class Emp implements Serializable {private static final long serialVersionUID = 1L; @JsonProperty("empName")private String name; @JsonIgnoreprivate int age; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GTM+8")private Date birthday; private String deptNo; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GTM+8")private Date entryDate;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GTM+8")private Date leaveDate;}

三、测试

测试需要用到 new ObjectMapper() 里的 writeValueAsStringreadValue,这是fasterxml 里自己的,很方便。

new ObjectMapper().writeValueAsString()

new ObjectMapper().readValue()

String empJsonStr= new ObjectMapper().writeValueAsString(emp);System.out.println(empJsonStr);Emp emp = new ObjectMapper().readValue(empJsonStr, Emp.class);System.out.println(emp);
Emp emp = new Emp();emp.setAge(11);emp.setBirthday(new Date());emp.setDeptNo("0011");emp.setEntryDate(new Date());emp.setLeaveDate(new Date());emp.setName("张三");// 将对象转换成json字符串String stuJson = new ObjectMapper().writeValueAsString(emp);System.out.println(stuJson);//打印  {"birthday":"2023-07-07 12:03:58","deptNo":"0011","empName":"张三"}//将字符串转换成对象String s = "{\"entryDate\":\"2023-07-07 11:49:1\",\"age\":\"11\",\"birthday\":\"2023-07-07 11:49:14\",\"deptNo\":\"0011\",\"empName\":\"张三\"}";Emp stu = new ObjectMapper().readValue(s, Emp.class);System.out.println(stu.toString());//打印  Emp(name=张三, age=0, birthday=Fri Jul 07 19:49:14 CST 2023, deptNo=0011, entryDate=null, leaveDate=null)

注意empName,age,entryDate,leaveDate

====================分割线=======================

文章到此已经结束,以下是紫薯布丁

public class Product{

    @JsonProperty("productName")
    private String name;
}
<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
        <artifactId>jackson-databind</artifactId> 
    <version>2.5.3</version>
</dependency>  

@Data
@JsonIgnoreProperties(value = { "entryDate", "leaveDate" })
public class Emp implements Serializable {
    private static final long serialVersionUID = 1L;
 
    @JsonProperty("empName")
    private String name;
 
    @JsonIgnore
    private int age;
 
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GTM+8")
    private Date birthday;
 
    private String deptNo;
 
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GTM+8")
    private Date entryDate;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GTM+8")
    private Date leaveDate;

}

         String empJsonStr= new ObjectMapper().writeValueAsString(emp);
        System.out.println(empJsonStr);
        
        
        Emp emp = new ObjectMapper().readValue(empJsonStr, Emp.class);
        System.out.println(emp);

        Emp emp = new Emp();
        emp.setAge(11);
        emp.setBirthday(new Date());
        emp.setDeptNo("0011");
        emp.setEntryDate(new Date());
        emp.setLeaveDate(new Date());
        emp.setName("张三");

        // 将对象转换成json字符串
        String stuJson = new ObjectMapper().writeValueAsString(emp);
        System.out.println(stuJson);
//打印  {"birthday":"2023-07-07 12:03:58","deptNo":"0011","empName":"张三"}
        
        //将字符串转换成对象
        String s = "{\"entryDate\":\"2023-07-07 11:49:1\",\"age\":\"11\",\"birthday\":\"2023-07-07 11:49:14\",\"deptNo\":\"0011\",\"empName\":\"张三\"}";
        Emp stu = new ObjectMapper().readValue(s, Emp.class);
        System.out.println(stu.toString());
//打印  Emp(name=张三, age=0, birthday=Fri Jul 07 19:49:14 CST 2023, deptNo=0011, entryDate=null, leaveDate=null)
 

阅读本书更多章节>>>>

本文链接:https://www.kjpai.cn/gushi/2024-04-14/158420.html,文章来源:网络cs,作者:晨起,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论