问题描述

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注解属性名,会多出一个字段的问题相关推荐

  1. mabatisplus怎么给实体类自定义属性_吊打面试官之:当实体类中的属性名和表中的字段名不一样 ,怎么办 ?...

    第1种: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致. <select id="selectorder" parametertype=&qu ...

  2. 【转】MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突

    [转]MyBatis学习总结(四)--解决字段名与实体类属性名不相同的冲突 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体 ...

  3. MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突

    2019独角兽企业重金招聘Python工程师标准>>> 一.准备演示需要使用的表和数据 CREATE TABLE orders(order_id INT PRIMARY KEY AU ...

  4. Mybatis解决字段名与实体类属性名不相同的冲突

    在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突. 一.准备演示需要使用的表和数据 CREATE TAB ...

  5. MyBatis学习总结(4)——解决字段名与实体类属性名不相同的冲突

    一.准备演示需要使用的表和数据 CREATE TABLE orders(order_id INT PRIMARY KEY AUTO_INCREMENT,order_no VARCHAR(20), or ...

  6. 把一个对象数组中的每个对象的属性名,从中文改成英文

    在工作中,前端获取的数据和后端需要的数据格式不一样,所以需要我们把数据处理一下. 例如:将一个对象数组 [{ '姓名': '小张', '手机号': '13712345678' }] 转化为 [{ 'u ...

  7. 【JS】js给对象动态添加、设置、删除属性名和属性值

    1. 访问对象属性 js中访问对象属性一共有两种方法:点获取法和方括号获取法. let user = { // 一个对象name: "John", // 键 "name& ...

  8. Mybatis处理字段名和属性名不一致的几种方法

    Mybatis处理字段名和属性名不一致的几种方法 1.为查询的字段设置别名,和属性名保持一致2.当字段符合MySQL的要求使用,而属性符合Java的要求使用驼峰-此时可以在mybatis核心配置文件中 ...

  9. 第二章 Jackson属性名转换+属性忽略

    @Data @JsonIgnoreProperties(ignoreUnknown = true) public class MyRecord {private boolean succeed;pri ...

最新文章

  1. 别再用print输出来调试代码了
  2. aitken插值方法的c++代码_无人驾驶路径规划技术-三次样条插值曲线及Python代码实现...
  3. 深入JavaScript与.NET Framework中的日期时间(1):基本概念与概述
  4. ValueError: slice index xxxx of dimension 0 out of bounds,详细分析。
  5. Linux Kernel Makefile Test
  6. dhcp 授权的原理
  7. linux+top写日志,Linux:日志那些命令
  8. 基于visual Studio2013解决面试题之1102合并字符串
  9. 计算机类中外合作办学情况,郑州大学2021年河南省本科一批各专业录取分数统计...
  10. .net中 参数out,ref,params的区别
  11. java对象调用方法,java 对象调用
  12. 2021年电力电缆作业考试题库
  13. jsessionid和jwt_Jsessionid和cookie的区别与联系
  14. java 换行分割_java – 如何通过换行分割字符串?
  15. 既往不恋,当下不杂,未来不迎
  16. 静态路由 华三静态路由
  17. 【产品面试】经典的一些面试题回顾
  18. 指针真的是个小机灵--将字符串中的n个字符左移,串中的前n个字符移到最后
  19. Unity3D编辑器插件开发
  20. 计算机网络——第三章 数据链路层——课后习题答案

热门文章

  1. SAP HR 用 OOPH/OOHQ 刷新人岗关系(pa0001hrp1001)
  2. 概率论-协方差Covariance相关系数Correlation Coefficient
  3. android notifydatasetchanged 不起作用,[android] recyclerView 使用 notifyDataSetChanged无效分析和解决方法...
  4. 春节红包为何成了必争之地
  5. nginx php 缓存时间,nginx expires设置数据过期时间
  6. linux 命令spawn,linux expect, spawn用法小记
  7. 普思立:激光锡焊在医疗行业的应用
  8. 计算机系统用户口令必须加密,计算机系统用户口令(密码)安全管理规定
  9. java不重启服务动态加载properties文件
  10. 微信小程序自定义tabbar中间凸起