@JsonIgnoreProperties注解不起作用的问题解决
最近做的一个东西要调第三方服务接口,要参照接口文档开发,但是第三方服务的接口字段名全部都是大写,本来以为这种应该没有什么问题。但是实际开发中发现大写的字段名字去调后台接口的时候报:
org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "LOGIN_ACCOUNT" (Class com.sitech.cloud.core.user.AccountInfo), not marked as ignorable
at [Source: org.mortbay.jetty.HttpParser$Input@11bfe02; line: 1, column: 19] (through reference chain: com.sitech.cloud.core.user.AccountInfo["LOGIN_ACCOUNT"])
瞬间懵了,看了看错误然后又去检查了几遍代码看是不是字符有问题,但是完全一模一样呀。完全不能理解。以前根本不知道会有这样的问题。查了很多东西都说加@JsonIgnoreProperties,但是我加了也没有用,搞不太懂了。但是看到原理说是转换json的时候,会默认把字段的的首字母修改为小写这样符合驼峰命名。
public static void main(String[] args) {
CustInfoBo accountInfo = new CustInfoBo();
accountInfo.setLOGIN_ACCOUNT("18720989209");
accountInfo.setLOGIN_PASSWORD("123456");
System.out.println(JSONObject.toJSON(accountInfo)); }
一试发现还真是这么个道理,JackSon 默认是通过驼式命名法处理。还查到json有默认的处理有一个变量控制,名字为compatibleWithJavaBean,默认为false,一看代码还真有。默认static的内容的先去系统读取有没有设置这个变量,如果是true就设置为true,如果是false就设置为false,果然是这样的。解决这个的问题是可以在初始化之前设置为true或者配置系统变量,但是与我现在的系统的解决不一样。
我直接去掉了这个@JsonProperty的引入,发现竟然有2个,我使用的是第二个,那我就试一试第一个好了。果然可以完美解决大写的字段名传入问题。注意是
import org.codehaus.jackson.annotate.JsonProperty;
瞬间觉的自己太low了,解决问题的结果是开心的,不过还是得看看这个2个注解有撒不一样。发现Jackson有1.x系列和2.x系列,其中org.codehaus.jackson.annotate.JsonProperty是1.x系列,另外一个是2.x系列。查看jar包发现还真是这样的情况。这样就明白了2者其实是一样的,只是版本不同。至于为啥一个起作用和一个不起作用,我怀疑是跟我框架使用的jar包有关。不过目前还没有找到具体相关的内容。等有时间在把该问题好好的看一看。
@JsonIgnoreProperties注解不起作用的问题解决的更多相关文章
- JAVA 注解的几大作用及使用方法详解
JAVA 注解的几大作用及使用方法详解 (2013-01-22 15:13:04) 转载▼ 标签: java 注解 杂谈 分类: Java java 注解,从名字上看是注释,解释.但功能却不仅仅是注释 ...
- JAVA 注解的几大作用及使用方法详解【转】
java 注解,从名字上看是注释,解释.但功能却不仅仅是注释那么简单.注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解 ...
- 【Java】java注解@Transient的作用, 配合JPA中时间段的查询
java注解@Transient的作用 @Transient标注的属性,不会被ORM框架映射到数据库中. 用于数据库表字段和java实体属性不一致的时候,标注在属性上使用. 例如时间段的查询 查询 R ...
- eclipse集成lombok注解不起作用
安装步骤: 步骤一:lombok的下载地址为:https://projectlombok.org/download,jar包很小.这里也把依赖写出来: <dependency> <g ...
- Spring @Transactional注解不起作用解决办法及原理分析
Transactional失效场景介绍 第一种 Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用.例如以下代码. 定义一个错误的@Trans ...
- SpringBoot Shiro 权限注解不起作用
最近在学习springboot结合shiro做权限管理时碰到一个问题. 问题如下: 我在userRealm中的doGetAuthorizationInfo方法中给用户添加了权限,然后在Controll ...
- JsonIgnore注解不起作用的解决办法
一开始在属性上注解了JsonIgnore以为就不会序列化了,结果还是有这个属性,看来是没有起作用啊 [JsonIgnore] public List<int> SubjectAndSubS ...
- jackson JsonPropertyOrder和@JsonIgnoreProperties注解
有些时候,我们在和外部系统交互的时候使用了json作为标准的数据交换格式,同时为了安全性考虑,增加了对报文的校验,因此我们需要确保序列化的时候参数有序且不多不少刚好,因为对外的API不像后台和前端交互 ...
- AOP注解不起作用的debug结果
经过2天的调试,我发现AOP注解配置不起作用居然是表达式的错误导致的 在xml文件中配置的base-package有关,初步认为@PointCut只能使用base-package..*(..)这样的方 ...
随机推荐
- 多种语言开发Spark-以WordCount为例
Spark是目前最火爆的大数据计算框架,有赶超Hadoop MapReduce的趋势.因此,趁着现在还有大多数人不懂得Spark开发的,赶紧好好学习吧,为了使不同的开发人员能够很好的利用Spark,S ...
- [Spark] - SparkCore程序优化总结
http://spark.apache.org/docs/1.6.1/tuning.html1) 代码优化 a. 对于多次使用的RDD,进行数据持久化操作(eg: cache.persist) b. ...
- java-信息安全(五)-非对称加密算法RSA
概述 信息安全基本概念: RSA算法(Ron Rivest.Adi Shamir.Leonard Adleman,人名组合) RSA RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rive ...
- webpack 打包js和css
首先进行全局安装webpack npm install -g webpackcmd跳转到项目的文件夹,安装webpack npm install --save-dev webpack接着需要packj ...
- 1.WP8.1开发_去除闪动效果,直接进入首页
有时候希望打开软件的时候,不出现闪屏,而直接进入到第一个页面. 把第一个页面作为闪屏,可以制作一些进度条 和动画等... 很简单,有两种方法去除闪屏. 1.删除项目下 Assets 文件夹里面的Sp ...
- 第一章Python起步
1.1搭建编程环境 编程环境的正确搭建很重要,一定要参考先搭配好环境变量,不然用着会很麻烦,在这里推荐使用工具pycharm,亿图图示画流程图,一定要正确安装,搭配好环境变量,后面要添加很多模块,前期 ...
- git使用教程及github远程仓库管理
git使用教程步骤 1.安装git 安装完后,在开始菜单里找到"git"->"Git Bash",蹦出一个类似命令行窗口,说明安装成功.2 注册git 在 ...
- CDN,你了解多少?
大家对CDN并不陌生,工作中或多或少都有所接触,最近也有人问到,在此对CDN相关概念和流程做下总结,希望还能对其他朋友也有所帮助. 一.什么是CDN 维基百科上是这样定义的: CDN:内容分发网络(C ...
- windows 安装Beautiful Soup(转)
Beautiful Soup是一个Python的一个库,主要为一些短周期项目比如屏幕抓取而设计.有三个特性使得它非常强大: 1.Beautiful Soup提供了一些简单的方法和Python术语,用于 ...
- 关于SQL的一些小知识
在代码中调用存储过程的时,必须先测试存储过程,存储过程测试成功之后再去java中去调用!!@!@#!@!@! 以后自己写的存储过程写一个本地保存一个.!~~~!!(这个很关键) 以后在代码中的SQL都 ...