Jackson中的那些坑
不符合驼峰规范的变量
“驼峰命名法”请自行百度。简单的来说就是变量的第一个单词以小写字母开始其他单词首字母大写,或者全部单词首字母都大写,分别称为“小驼峰”和“大驼峰”
比如一个符合驼峰规范命名的实体:
public class Entity {
String beFlag;
public String getBeFlag() {
return beFlag;
}
public void setBeFlag(String beFlag) {
beFlag = beFlag;
}
}
转化的JSON为:
{“beFlag”:null}
前段时间走查代码时发现一个问题,实体中有一个字段为ECash。驼峰规范中并没有详细说明这种单词只有一个字母的变量是否符合驼峰规范。当遇到这种变量时,转化的JSON发送了问题,我们的预期应该是这样的
{“eCash”:null}
但实际情况是这样的
{“ecash”:null}
没错,字母全部被小写了。这可是个大问题,接口文档按经验肯定是错的。
如何解决呢?
当然是尽量按照驼峰规范命名变量,如果不行,那就得使用注解的方式。
Jackson提供了” JsonProperty”注解方式,使用如下代码
public class Entity {
@JsonProperty
String ECash;
public String getECash() {
return ECash;
}
public void setECash(String eCash) {
ECash = eCash;
}
}
得到的JSON结果为
{"ECash":null,"ecash":null}
虽然我们希望的”ECash“来了,但是之前全小写的还存在。这是因为ECash的get方法,使用@JsonIgnore即可解决。代码变成这样:
public class Entity {
@JsonProperty
String ECash;
@JsonIgnore
public String getECash() {
return ECash;
}
public void setECash(String eCash) {
ECash = eCash;
}
}
得到的JSON结果为:
{"ECash":null}
至此,问题解决了。除此之外,JsonProperty还可以指定JSON中的值,比如这样:
public class Entity {
@JsonProperty("eCash")
String ECash;
@JsonIgnore
public String getECash() {
return ECash;
}
public void setECash(String eCash) {
ECash = eCash;
}
}
即指定JSON的结果为小驼峰模式。
{"eCash":null}
举一反三,JsonProperty的使用场景还有很多,除了解决这个“坑”以外。还可以直接用来转换类UNIX习惯的下划线间隔的变量转化为驼峰规范。
Jackson中的那些坑的更多相关文章
- 记录Jackson和Lombok的坑
记录Jackson和Lombok的坑 今天遇到Jackson反序列化json缺少了字段,后来研究下发现是Jackson的机制和Lombok生成的setter不一致,导致没有正确调用setter. 复现 ...
- 整理iOS9适配中出现的坑(图文)
原文: http://www.cnblogs.com/dsxniubility/p/4821184.html 整理iOS9适配中出现的坑(图文) 本文主要是说一些iOS9适配中出现的坑,如果只是要 ...
- jackson中JSON字符串节点遍历和修改
有些场景下,在实现一些基础服务和拦截器的时候,我们可能需要在不知道JSON字符串所属对象类型的情况下,对JSON字符串中的某些属性进行遍历和修改,比如,设置或查询一些报文头字段. 在jackson中, ...
- Nancy总结(二)记一次Nancy 框架中遇到的坑
记一次Nancy 框架中遇到的坑 前几天,公司一个项目运行很久的Nancy框架的网站,遇到了一个很诡异的问题.Session 对象跳转到另外一个页面的时候,session对象被清空了,导致用户登录不上 ...
- 整理 iOS 9 适配中出现的坑(图文)(转)
作者:董铂然 本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着 ...
- 整理 iOS 9 适配中出现的坑
本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iOS9正式版,随着有用户陆续升级 ...
- 整理 iOS 9 适配中出现的坑(图文)
作者:董铂然 授权本站转载. 本文主要是说一些iOS9适配中出现的坑,如果只是要单纯的了解iOS9新特性可以看瞄神的开发者所需要知道的 iOS 9 SDK 新特性.9月17日凌晨,苹果给用户推送了iO ...
- iOS内购(IAP)中的那些坑
公司的公共库原来并没有这部分的代码,以前做内购是用两个比较有名的github上的第三方库.一个叫MKStoreKit,另一个叫IAPManager,我看了一下写的都很辣鸡,使用起来很不方便,而且写的还 ...
- jquery 的 each 方法中 return 的坑
jquery 的 each 方法中 return 的坑 Chapter 0 在项目中使用 jquery 的 each 方法时想在 each 的循环中返回一个布尔类型的值于是掉进一个坑中... Chap ...
随机推荐
- PHP设计模式之工厂/单例/注册者模式
工厂模式 简单工厂模式 [静态工厂方法模式](Static Factory Method)是类的创建模式 工厂模式的几种形态: 1.简单工厂模式(Simple Factory)又叫做 静态工厂方法模式 ...
- letcode刷题之两数相加
letcode里面刷题,坑还是链表不熟,(1)头结点还是有必要设置,否则返回的时候找不到位置:(2)先设置next到新节点再next到下一个节点:都是基础知识 /* * * You are given ...
- POJ 3371 Flesch Reading Ease 无聊恶心模拟题
题目:http://poj.org/problem?id=3371 无聊恶心题,还是不做的好,不但浪费时间而且学习英语. 不过为了做出点技术含量,写了个递归函数... 还有最后判断es,ed,le时只 ...
- SpringMVC Maven创建项目
一.配置Maven环境: 1.去官网下载好Maven,并解压: 2.添加环境变量: ①添加环境变量,如下: ②把maven的bin目录添加到环境变量path下面,如下(我系统是win10,win7编辑 ...
- C图书借还示例
以后要搞C了先自己练习一下,系统本身没有太大的实际用途,只是用来磨练编程规范,不足之处还望大家多多指正 .互相交流共同进步. 为了方便只使用了一个 book.c 文件,在vc6 下编译通过,其他编译器 ...
- jquery 判断是否 ie6 ie7 ie8
var isIE = !!window.ActiveXObject; var isIE6 = isIE && !window.XMLHttpRequest; var isIE8 = ...
- MAC安装XAMPP的出现无法打开Apache server
安装MAMP后,启动服务时提示Apache启动失败,80端口被占用.查看进程发现存在几个httpd. OS X自带Apache,可是默认是没有启动的.我也没有开启Web共享,怎么就开机启动了呢? 不知 ...
- SAP修改前台屏幕字段文本
首先,要找到需要修改文本所对应的数据元素: 其次,进入CMOD,点击菜单栏中“转到--文本增强--关键字--更改”,填入数据元素,进入下一屏幕.将显示的文本全部改为自己需要的文本,保存即可.
- 从 IT 中断中学到的最佳监控实践
每个运维监控工具,一般要追踪数十万个内部性能指标.学会对哪些事件进行告警以及监控确实需要花费想当长的一段时间.因为,并非所有的指标等级都是一致.因此我们需要摸索出一套简单的方法,便于管理所有指标,而且 ...
- 【POJ 2152】 Fire (树形DP)
Fire Description Country Z has N cities, which are numbered from 1 to N. Cities are connected by h ...