博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【java】属性别名:@JsonProperty和@JSONField的区别?【图文教程】
阅读量:2139 次
发布时间:2019-04-30

本文共 2474 字,大约阅读时间需要 8 分钟。

平凡也就两个字: 懒和惰;

成功也就两个字: 苦和勤;
优秀也就两个字: 你和我。
跟着我从0学习JAVA、spring全家桶和linux运维等知识,带你从懵懂少年走向人生巅峰,迎娶白富美!
关注微信公众号【 IT特靠谱 】,每一篇文章都是心得总结,跟我学习你就是大牛!

 

属性别名:@JsonProperty和@JSONField的区别?【图文教程】

温馨提示:

      @JsonProperty@JSONField注解都是为了解决obj转json字符串的时候,将java bean的属性名替换成目标属性名。常见于调用第三方接口的时候属性名不一致的场景。

      两个注解的作用是相同的,只是来源不同,使用方式不同。下面将详解其异同!

 

1 @JsonProperty注解

      @JsonProperty注解来源于jackson包,搭配ObjectMapper().writeValueAsString(实体类)方法使用,将实体类转换成json字符串。搭配ObjectMapper().readValue(字符串)方法使用,将json字符串转换成实体类。

1.1 引入jackson依赖包

com.fasterxml.jackson.core
jackson-databind
版本号

1.2 测试json字符串与bean对象相互转换

实体类:User.java

import com.fasterxml.jackson.annotation.JsonProperty;@Data@NoArgsConstructor@AllArgsConstructorpublic class User {	@JsonProperty("JsonPropertyName")	private String name;	private String sex;	private Integer age;}

测试方法:

@Testpublic void testJsonProperty() throws IOException{    //bean ---> json	User user=new User("zhangsan","man",22);	System.out.println(new ObjectMapper().writeValueAsString(user));    //json ---> bean	String str="{\"sex\":\"man\",\"age\":22,\"JsonPropertyName\":\"zhangsan\"}";	System.out.println(new ObjectMapper().readValue(str, User.class).toString());}

测试结果:

{"sex":"man","age":22,"JsonPropertyName":"zhangsan"}User [name=zhangsan, sex=man, age=22]

      可见,bean转成json字符串后,@JsonProperty注解的bean属性名已经替换成了指定属性名:JsonPropertyName;

                 json字符串转成bean后,@JsonProperty注解指定的属性名已经替换成了bean属性名:name;

 

2  @JSONField

      @JSONField是位于fastjson包里面,搭配JSON.toJSONString(实体类)方法使用,将实体类转换成json字符串。搭配JSON.parseObject(字符串,实体类.class)方法使用,将json字符串转换成实体类。

2.1 引入fastjson依赖包

com.alibaba
fastjson
版本号

2.2 测试json字符串与bean对象相互转换

实体类:User.java

import com.alibaba.fastjson.annotation.JSONField;@Data@NoArgsConstructor@AllArgsConstructorpublic class User {	@JSONField(name="JSONFieldName")	private String name;	private String sex;	private Integer age;}

测试方法:

@Testpublic void testSONField(){    //bean ---> json	User user=new User("zhangsan","man",22);	System.out.println(JSON.toJSONString(user));    //json ---> bean	String str="{\"JSONFieldName\":\"zhangsan\",\"age\":22,\"sex\":\"man\"}";	System.out.println(JSON.parseObject(str, User.class).toString());	}

测试结果:

{"JSONFieldName":"zhangsan","age":22,"sex":"man"}User [name=zhangsan, sex=man, age=22]

      可见,bean转成json字符串后,@JSONField注解的bean属性名已经替换成了指定属性名:JSONFieldName;

                 json字符串转成bean后,@JSONField注解指定的属性名已经替换成了bean属性名:name;

                测试结果同@JsonProperty。

 

      如果以上教程对您有帮助,为了不迷路,请关注一下吧~

 

转载地址:http://mupgf.baihongyu.com/

你可能感兴趣的文章
用一个小游戏入门深度强化学习
查看>>
如何应用 BERT :Bidirectional Encoder Representations from Transformers
查看>>
5 分钟入门 Google 最强NLP模型:BERT
查看>>
强化学习第1课:像学自行车一样的强化学习
查看>>
强化学习第2课:强化学习,监督式学习,非监督式学习的区别
查看>>
强化学习第3课:有些问题就像个赌局
查看>>
强化学习第4课:这些都可以抽象为一个决策过程
查看>>
强化学习第5课:什么是马尔科夫决策过程
查看>>
强化学习第6课:什么是 Crossentropy 方法
查看>>
强化学习第7课:交叉熵方法的一些局限性
查看>>
强化学习 8: approximate reinforcement learning
查看>>
图解什么是 Transformer
查看>>
代码实例:如何使用 TensorFlow 2.0 Preview
查看>>
6 种用 LSTM 做时间序列预测的模型结构 - Keras 实现
查看>>
走进JavaWeb技术世界1:JavaWeb的由来和基础知识
查看>>
走进JavaWeb技术世界2:JSP与Servlet的曾经与现在
查看>>
走进JavaWeb技术世界3:JDBC的进化与连接池技术
查看>>
走进JavaWeb技术世界4:Servlet 工作原理详解
查看>>
走进JavaWeb技术世界5:初探Tomcat的HTTP请求过程
查看>>
走进JavaWeb技术世界6:Tomcat5总体架构剖析
查看>>