我是靠谱客的博主 难过小馒头,最近开发中收集的这篇文章主要介绍关于用jackson的@JsonProperty注解属性名,会多出一个字段的问题问题描述解决方案:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述

jackson2对pojo类型序列化的处理时(即以下三个包,导入即生效)
如下在这里插入图片描述
Jackson2在初始化序列器时,对pojo类型对象会收集其属性信息,属性包括成员变量及方法,然后属性名称和处理过后的方法名称做为key保存到一个LinkedHashMap中。收集过程中会调用com.fasterxml.jackson.databind.util
.BeanUtil中的legacyManglePropertyName方法用来处理方法名称
它会将get/set方法前缀,即get或set去掉,并将其后面的连续大写字符转换成小写字符返回
例如: getNEWString会转变成newstring返回,属性名称为"Category",其生成的get方法就会是这样的"getCategory",处理过后就是这样的"category",这与属性Category并不冲突,可以同时存在于HashMap中。
收集完属性信息后,下面的步骤中会删除掉非可见的属性,一般指的是私有成员变量,这时,名称为"Category"的成员变量属性会被删除掉(即不加任何注释的状态,所以之前表格中字段数据会空白),这样的序列化结果是不会有问题的,但,如果加了@JsonProperty注释,Jackson2会认为这个属性是可见的,不必会删除,这时这两个表示同一个值的属性就会被一同序列化(JSON里面出现两个字段)。

public class Inv {
	@JsonProperty("id")
	private int id;
	@JsonProperty("Category")
	private String Category;
	@JsonProperty("Specification")
	private String Specification;
	@JsonFormat(pattern="yyyy-MM-dd")
	private Date Date;
	@JsonProperty("Orders")
	private int Orders;
	@JsonProperty("Balance")
	private int Balance;
	@JsonProperty("Remark")
	private String Remark;
	}


解决方案:

1.@JsonProperty 如果标注在get set方法上(此处博主没有进行过实现)
2.pojo类加注解@JsonAutoDetect(getterVisibility=JsonAutoDetect.Visibility.NONE)

最后:建议MVC编程的时候数据表的字段和pojo类字段写成小写,能减少很多错误!

部分引用https://blog.51cto.com/luhaiyou/2369886,非常感谢这篇文章

最后

以上就是难过小馒头为你收集整理的关于用jackson的@JsonProperty注解属性名,会多出一个字段的问题问题描述解决方案:的全部内容,希望文章能够帮你解决关于用jackson的@JsonProperty注解属性名,会多出一个字段的问题问题描述解决方案:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部