关于@JsonProperty和@JSONField注解的区别及用法

这篇文章主要介绍了关于@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方法上

以上为个人经验,希望能给大家一个参考,也希望大家多多支持0133技术站。

以上就是关于@JsonProperty和@JSONField注解的区别及用法的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java