这篇文章主要介绍了关于@JsonProperty和@JSONField注解的区别及用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
@JsonProperty和@JSONField注解区别及用法
1. 目的
都是为了解决bean与json字段不一致问题,或者字段定义不符合前端所需要的标准
2. 区别
1.框架不同:
@jsonProperty是 Jackson的包,而@jsonfield是fastjson的包
2.用法不同:
(1)bean转换成Json字符串:
@JsonProperty
:ObjectMapper().writeValueAsString(Object value)@JSONField
:ObjectMapper().readValue(String content, Class valueType)
(2)Json字符串转化为bean:
@JsonProperty
:ObjectMapper().readValue(String content, Class valueType)@JSONField
:JSONObject.parseObject(String content, Class valueType)
(3)@JSONField这个注解可以用于get、set以及属性上面
public class Test{
/*
注解在属性上的时候可以设置一些序列化、格式化的属性
@JSONField(serialize = false)---->序列化的时候忽略这个属性
@JSONField(format = "yyyyMMdd")---->序列化和反序列化额时候使用yyyyMMdd,一般在Date类型的字段上使用
*/
@JSONField(serialize = false)
public String Name;
/*
注解在set方法表示json转成bean的时候会将json中的Name属性赋值给实体类的Name
*/
@JSONField(name="Name")
public void setName(String Name){
this.Name = Name;
}
/*
注解在get方法表示bean转换成json的时候会把实体类的Name属性值赋给json的Name
*/
@JSONField(name="Name")
public String getName(){
return this.Name;
}
}
(3)@JSONproperty这个注解用于属性上面
如把trueName属性序列化为name,可以在属性名上面增加@JsonProperty(value=“name”)。
(4)jackson的@JsonIgnore使用
作用:在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
使用方法:一般标记在属性或者方法上,返回的json数据即不包含该属性。
jsonField和jsonProperty注解的坑
遇到的问题:
实体类中的字段一般都是首字母小写的,但是所要传输的json数据(接收的和发出去的)都要求字段的首字母大写
public class Test{
private String Name;------>setter + getter
}
json:
{
'Name': 'test'
}
但是这样直接接收的话是接收不到Name的取值的
所以需要使用jsonField注解和jsonProperty注解
@JSONField
这个注解分别可以注解在实体类的属性、setter和getter方法上
public class Test{
/*
注解在属性上的时候可以设置一些序列化、格式化的属性
@JSONField(serialize = false)---->序列化的时候忽略这个属性
@JSONField(format = "yyyyMMdd")---->序列化和反序列化额时候使用yyyyMMdd,一般在Date类型的字段上使用
*/
@JSONField(serialize = false)
public String Name;
/*
注解在set方法表示json转成bean的时候会将json中的Name属性赋值给实体类的Name
*/
@JSONField(name="Name")
public void setName(String Name){
this.Name = Name;
}
/*
注解在get方法表示bean转换成json的时候会把实体类的Name属性值赋给json的Name
*/
@JSONField(name="Name")
public String getName(){
return this.Name;
}
}
@JSONProperty
( 1 ) 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,
( 2 ) 如把trueName属性序列化为name,@JsonProperty(value=“name”)
( 3 ) 类似@JSONField注解注在setter方法上
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程学习网。
本文标题为:关于@JsonProperty和@JSONField注解的区别及用法
基础教程推荐
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 降序排序:Java Map 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01