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

这篇具有很好参考价值的文章主要介绍了@JsonProperty 前端传参数名和后端参数名不一样 入参 出参 映射 注解 springboot springmvc。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

省流:

使用 @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() 里的 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.toymoban.com/news/detail-856246.html

到了这里,关于@JsonProperty 前端传参数名和后端参数名不一样 入参 出参 映射 注解 springboot springmvc的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端和后端交互数据类型转换

    页面是男/女 后端pojo类以及数据库中是Integer 0/1  怎么样很方便地转化? ----枚举转化-- 在web开发中有时会使用枚举作为参数,而前端在调接口时就会出现传错或者传空导致后端拿不到枚举类型。在这里就使用反序列化@JsonDeserialize 这里是对枚举进行反序列化,所以首先编写一个

    2024年03月26日
    浏览(57)
  • 前端和后端解决跨域问题的方法

    目前很多java web开发都是采用前后端分离框架进行开发,相比于单体项目容易产生跨域问题。  后端接收到请求并返回结果了,浏览器把这个响应拦截了。 浏览器 基于同源策略,如果请求的网页和当前的服务 不是同源的 ,并且发送的是 XHR (XMLHttpRequest)请求,就会产生跨域

    2024年04月26日
    浏览(43)
  • php许愿墙代码包括前端和后端部分

    以下是一个简单的PHP许愿墙代码示例,包括前端和后端部分: 前端HTML代码(index.html): 后端PHP代码(wishwall.php): 以上代码实现了一个简单的许愿墙功能。用户在前端页面填写姓名和愿望,点击提交后,后端PHP代码会将愿望以文本形式追加到一个名为 \\\"wishes.txt\\\" 的文件中,

    2024年02月03日
    浏览(47)
  • IC设计的前端和后端是如何区分的?

    **1、IC前端:**根据芯片规格书完成SOC的设计和集成, 使用仿真验证工具完成SOC的设计验证。 **2、IC后端:**将前端设计产生的门级网表通过EDA设计工具进行布局布线和进行物理验证并最终产生供制造用的GDSII数据 **1、IC前端:**熟悉处理器/DMA/AXI/AHB总线。 **2、IC后端:**芯片物

    2024年01月24日
    浏览(40)
  • 前端和后端之间的CORS 跨域和解决办法

            跨源资源共享 (CORS,或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其他源(域、协议或端口),使得浏览器允许这些源访问加载自己的资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送

    2024年01月23日
    浏览(55)
  • uniapp 小程序实现微信授权登录(前端和后端)

    1.主要流程:先通过 uni.getUserProfile授权获取用户名称和头像等信息 在调用 uni.login 获取微信登录需要的临时code 2. 前端代码: 1.主要流程:在前端调用接口成功的将临时code 传递给后端时 ,后端通过调用微信的第三方接口拿到 openid, session_key 这两个参数,查询数据库是否有

    2024年02月16日
    浏览(45)
  • 前端uni微信小程序和后端nodejs使用websoket

    需求 前端向后台服务器发请求获取验证码,然后端游输入验证码,向我的后端发请求获取验证信息。后台给游戏端返回信息的时候同时给微信小程序端返回验证结果。意思是不要微信小程序端主动触发,验证是否绑定的请求。 思路 后端生成验证码时存入用户的唯一Id和ip,前

    2024年02月03日
    浏览(52)
  • 前端和后端在软件开发中的两个重要部分

    前端和后端是软件开发中的两个重要部分,它们在职责、技术栈和工作重点上都有所不同。以下是前端和后端的主要区别: 职责不同 : 前端 :前端主要负责用户可以看到的部分,即用户界面(UI)和用户体验(UX)。前端开发者关注如何展示信息,并确保用户可以方便地与

    2024年04月10日
    浏览(46)
  • 前端h5页面和后端php服务的几种部署方式

    和java后端服务的部署不同,前端h5的部署有好几种。 CDN+OSS nginx反向 把输出物全部拷贝到后端 所以,这就带来了部署上的歧义,到底该用哪种部署方式呢? 本文以前端h5搭配后端php程序为示例,试着讨论一下他们之间的配合部署。 这里的前端h5是仅限静态页面,不包括nodej

    2024年01月17日
    浏览(47)
  • 一分钟看懂:前端和后端,哪个更简单?转行程序员必看!

    大家好,这里是程序员晚枫,专注于转行程序员的1对1咨询,小红薯也叫这个名。 想转行程序员的朋友,在选择方向的时候都会遇到一个问题: 哪个技术方向适合我?前端和后端哪个更简单? 今天咱们就来一起分析一下~ 很多网上的消息或者培训机构的广告会告诉你:前端比

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包