省流:
使用 @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;
@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;
}
三、测试
测试需要用到 new ObjectMapper() 里的 writeValueAsString,readValue,这是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("张三");文章来源:https://www.toymoban.com/news/detail-856246.html
// 将对象转换成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.toymoban.com/news/detail-856246.html
到了这里,关于@JsonProperty 前端传参数名和后端参数名不一样 入参 出参 映射 注解 springboot springmvc的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!