FastJson 转换 javaBean 时 null 值被忽略都问题
@[toc]
问题
当 JavaeBean 中某个属性值为 null 时,转换为 JSONObject 对象或者 json 字符串时,该属性值被忽略。
如何让不管值是否为 null,转化后该属性还存在,只是值为 null。
情况演示
class St {private String sid;private String sname;private String ssex;public String getSid() {return sid;}public void setSid(String sid) {this.sid = sid;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public String getSsex() {return ssex;}public void setSsex(String ssex) {this.ssex = ssex;}public static void main(String[] args) {St st = new St();st.setSid("111");st.setSname("aaa");JSONObject jsonSt = JSONObject.parseObject(JSON.toJSONString(st));System.out.println(jsonSt);}
}
输出结果: {“sname”:"aaa","sid":111}
ssex属性没了!
解决办法
在转化的方法中添加这个属性:SerializerFeature.WriteMapNullValue。
public static void main(String[] args) {St st = new St();st.setSid("111");st.setSname("aaa");JSONObject jsonSt = JSONObject.parseObject(JSON.toJSONString(st, SerializerFeature.WriteMapNullValue));System.out.println(JSON.toJSONString(jsonSt, SerializerFeature.WriteMapNullValue));}
输出结果:{"sname":"aaa","sid":111,"ssex":null}
更多属性
上文中用到的 JSON.toJSONString(Object object, SerializerFeature… features) 方法 SerializerFeature 的属性值还有如下 SerializerFeature属性 |
含义 |
---|---|
UseSingleQuotes | 使用单引号而不是双引号,默认为false |
WriteMapNullValue | 使用输出为null的参数,默认为false |
当value为null时,JSONObject.toJSONString()返回的json字符串将不展示对应的key,这明显不是我们想要的,所以可以使用
SONObject.toJSONString(Object object, SerializerFeature... features) 来获取我们想要的值,SerializerFeature属性对应的值和含义如下:
名称 | 含义 |
---|---|
QuoteFieldNames | 输出key时是否使用双引号,默认为true |
UseSingleQuotes | 使用单引号而不是双引号,默认为false |
WriteMapNullValue | 是否输出值为null的字段,默认为false |
WriteEnumUsingToString | Enum输出name()或者original,默认为false |
UseISO8601DateFormat | Date使用ISO8601格式输出,默认为false |
WriteNullListAsEmpty | List字段如果为null,输出为[],而非null |
WriteNullStringAsEmpty | 字符类型字段如果为null,输出为”“,而非null |
WriteNullNumberAsZero | 数值字段如果为null,输出为0,而非null |
WriteNullBooleanAsFalse | Boolean字段如果为null,输出为false,而非null |
SkipTransientField | 如果是true,类中的Get方法对应的Field是transient,序列化时将会被忽略。默认为true |
SortField | 按字段名称排序后输出。默认为false |
WriteTabAsSpecial | 把\t做转义输出,默认为false 不推荐 |
PrettyFormat | 结果是否格式化,默认为false |
WriteClassName | 序列化时写入类型信息,默认为false。反序列化是需用到 |
DisableCircularReferenceDetect | 消除对同一对象循环引用的问题,默认为false |
WriteSlashAsSpecial | 对斜杠’/’进行转义 |
BrowserCompatible | 将中文都会序列化为\uXXXX格式,字节数会多一些,但是能兼容IE6,默认为false |
WriteDateUseDateFormat | 全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj,SerializerFeature.WriteDateUseDateFormat); |
DisableCheckSpecialChar | 一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性。默认为false |
NotWriteRootClassName | 含义 |
BeanToArray | 将对象转为array输出 |
WriteNonStringKeyAsString | 含义 |
NotWriteDefaultValue | 含义 |
BrowserSecure | 含义 |
IgnoreNonFieldGetter | 含义 |
WriteEnumUsingName | 含义 |
转载于:https://blog.51cto.com/7964880/2398784
FastJson 转换 javaBean 时 null 值被忽略都问题相关推荐
- fastjson使用toJSONString时null值不序列化问题
问题描述: 在使用fastjson调用 JSON.toJSONString(obj); 方法将对象转换为json字符串时,如果对象obj的属性字段有值为null时,该属性字段不会被序列化. 比如:定义 ...
- JPA踩坑记:Spring Data Jpa 更新为null的问题(save方法保存时null值会被更新到数据库)
关键字: JPA更新为null,JPA save null,JPA保存为null 今天使用jpa的save方法时发现null字段也会被更新到数据库,这个直接把数据库数据覆盖的行为很可怕,果断研究了一下 ...
- fastjson生成json时Null属性不显示
举个例子 生成JSON代码片段 [java] 预览复制 Map < String , Object > jsonMap = new HashMap< String , Object& ...
- excel导入数据时null值的处理
场景 excel导入数据时,空文本转换金额报错. 问题分析 如amount字段,后台明明设置了为空不转换啊: if(StringUtils.isEmpty(amount)){invoice.setAm ...
- 你还不知道mysql中空值和null值的区别吗?
前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...
- mysql group by 区分null 值和非null_你知道mysql中空值和null值的区别吗
前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...
- mysql两个空值相同吗_你知道mysql中空值和null值的区别吗
前言 最近发现带的小伙伴写sql对于空值的判断方法不正确,导致程序里面的数据产生错误,在此进行一下整理,方便大家以后正确的判断空值.以下带来示例给大家进行讲解. 建表 create table tes ...
- 处理数字_7_含NULL值的列的聚合
含NULL值的列的聚合 需求描述 需求:验证行NULL的列的聚合函数的计算结果. 解决方法:通过MIN.MAX.SUM.AVG.COUNT(*)来完成. 注: 数据库数据集SQL脚本详见如下链接地址 ...
- 写入null_ArrayList并发写出现Null值
ArrayList并非线程安全的容器,这一点大家可能都非常清楚,但是在并发写入的情况下,不安全的情况具体有哪些,大家是否很清楚呢?本篇文章重点聊一下出现null的情况,然后对于其他并发写的安全做一个简 ...
最新文章
- Easyui 让DataGrid适应浏览器宽度
- RX学习笔记:正则表达式
- 财务 计算机网络,计算机网络技术在财务系统中的应用
- deepfm算法思维导图和代码
- python获取系统时间函数_Python常用时间操作总结【取得当前时间、时间函数、应用等】...
- 包含html语言的超链接标记的网页_什么是网页
- mybatis热加载的实现
- asp.net mvc(九)
- Linux下发生段错误时如何产生core文件-转
- Redis HyperLogLog命令,phpredis如何执行HyperLogLog命令
- 深度学习:Imagenet Object Classification方法
- 2022Java最新学习路线(初学者必看)
- 通俗易懂的自动控制原理 # 绪论
- (BISM)FTP搜索引擎BLOG开通了,专门交流搜索引擎技术
- 前端电子时钟字体引入
- matlab gui编程教程,matlab如何使用gui
- Steam VR目录结构
- 这几款视频语音转文字软件你值得拥有
- 编写一个程序,提示用户输入以兆位每秒(Mb/s)为单位的下载速度和以兆字节(MB)为单位的文件大小。程序中应计算文件的下载时间。
- oeasy教您玩转vim - 21 - 状态横条
热门文章
- 结构体的两种声明方式:堆上和栈上以及在双链表的应用
- CUDA Samples: Streams' usage
- 给动态生成的按钮添加ajax,Ajax/Javascript动态创建按钮的问题
- php 485串口通信,485串口通信中的常见问题
- php用命令查mysql_phpMySQL命令大全总结
- 用python做算法_自己用python写的螺旋矩阵生成算法
- 计算机在人力资源管理中的应用论文,计算机人事管理论文
- 【硬件基础】有源蜂鸣器与无源蜂鸣器
- java报错MalformedURLException: unknown protocol: c
- switch的case使用数组C语言,使用常量数组的元素作为switch语句中的case