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

 更新时间:2022年08月30日 09:00:18   作者:坚持与努力  
这篇文章主要介绍了关于@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方法上

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot Validation提示信息国际化配置方式

    SpringBoot Validation提示信息国际化配置方式

    这篇文章主要介绍了SpringBoot Validation提示信息国际化配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Java线程安全状态专题解析

    Java线程安全状态专题解析

    线程安全是多线程编程时的计算机程序代码中的一个概念。在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况
    2022-03-03
  • JDBC连接数据库步骤及基本操作示例详解

    JDBC连接数据库步骤及基本操作示例详解

    这篇文章主要为大家介绍了JDBC连接数据库步骤及基本操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Java之如何获取泛型参数

    Java之如何获取泛型参数

    在Java开发中,获取泛型参数一般有两种方法:第一种是通过JDK自带的API,主要利用反射机制来获取类的泛型信息;第二种方法是借助Spring框架提供的GenericTypeResolver工具类,这种方式更加简便,这两种方法都能有效地帮助开发者在运行时获取到泛型参数
    2024-09-09
  • SpringBoot程序打包失败(.jar中没有主清单属性)

    SpringBoot程序打包失败(.jar中没有主清单属性)

    在学习SpringBoot,打包SpringBoot程序后,在cmd运行出现了 某某某.jar中没有注清单属性,本文就来介绍一下原因以及解决方法,感兴趣的可以了解一下
    2023-06-06
  • Java实现简单图形界面计算器

    Java实现简单图形界面计算器

    这篇文章主要为大家详细介绍了Java实现简单图形界面计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Java中HashMap集合的常用方法详解

    Java中HashMap集合的常用方法详解

    本篇文章给大家带来的内容是关于Java中HashMap集合的常用方法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。下面我们就来学习一下吧
    2021-11-11
  • Java定时器通信协议管理模块Timer详解

    Java定时器通信协议管理模块Timer详解

    这篇文章主要介绍了Java定时器通信协议管理模块Timer, Timer一般指定时器(通信协议管理模块)人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的
    2022-08-08
  • 如何利用Java输出链表中倒数第k个结点

    如何利用Java输出链表中倒数第k个结点

    这篇文章主要给大家介绍了关于如何利用Java输出链表中倒数第k个结点的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友可以参考下
    2021-12-12
  • Java CharacterEncodingFilter过滤器的理解和配置案例详解

    Java CharacterEncodingFilter过滤器的理解和配置案例详解

    这篇文章主要介绍了Java CharacterEncodingFilter过滤器的理解和配置案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08

最新评论