返回顶部
首页 > 资讯 > 后端开发 > Python >关于@JsonProperty和@JSONField注解的区别及用法
  • 727
分享到

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

2024-04-02 19:04:59 727人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录@JSONProperty和@jsONField注解区别及用法1. 目的2. 区别jsonField和jsonProperty注解的坑@JSONField@JSONPropert

@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)
	public String Name;
	
	@JSONField(name="Name")
	public void setName(String Name){
		this.Name = 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)
    public String Name;
    
    @JSONField(name="Name")
    public void setName(String Name){
        this.Name = Name;
    }
    
    @JSONField(name="Name")
    public String getName(){
        return this.Name;
    }
}

@JSONProperty

( 1 ) 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,

( 2 ) 如把trueName属性序列化为name,@JsonProperty(value=“name”)

( 3 ) 类似@JSONField注解注在setter方法上

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 关于@JsonProperty和@JSONField注解的区别及用法

本文链接: https://lsjlt.com/news/166314.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作