fastjson的使用问题
@JSONField注解
看源码它可以作用于字段和方法上。
1.作用Field
@JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称。
但是我在使用中,发现并不如上所说:
例如:
@JSONField(name="project_id") private Long ProjectID
发现bean 转json的时候并是"project_id":xxx的形式,json转bean的时候也不会把"project_id":xx的内容设置到ProjectID的里面。
fastjson的版本是1.1.15
2.作用在setter和getter方法上 这种方式倒是在使用的过程当中符合期望。
/**bean 转json 时会把bean中的ProjectID转换为project_id */@JSONField(name="project_id")public Long getProjectID() {return ProjectID;}
/**json 转bean 时会把json中的project_id值赋值给projectID*/@JSONField(name="project_id")public void setProjectID(Long projectID) {ProjectID = projectID;}
3.@JSONField其它用法
查看@JSONField注解的源码,除了name可用之外,还有format,serialize,deserialize,serialzeFeatures,parseFeatures可用
- format,貌似用在Date类型的字段来格式化时间格式比较有用。
- serialize和deserialize是布尔类型的,用法为
@JSONField(serialize=false) private Long ProjectID
就是在序列化的时候就不包含这个字段了。deserialize与之相反。但是有一点需要注意,我看其它地方说,当字段为final的时候注解放在字段上是不起作用的,这时候应该放在get或set方法上。
还有一种使用方法:在对象对应字段前面加上transient,表示该字段不用序列化,即在生成json的时候就不会包含该字段了。
private transient String name;
- serialzeFeatures,我用到这个属性,fastjson默认的序列化规则是当你的字段的值为null的时候,它是不会给你序列化这个字段的,例如我有一个这样的需求
{"fieldName":"project_id","operator":"is not","value":null}
一个对象序列化成这样,我的代码如下:
CriteriaVO criteriaVO = new CriteriaVO();criteriaVO.setFieldName("project_id");criteriaVO.setOperator("is not");criteriaVO.setValue(null);
默认的它只会序列化为如下结果:
{"fieldName":"project_id","operator":"is not"}
当然fastjson还是允许你控制一下序列化的规则的。这就用到了SerializerFeature,这个一个枚举,里面有好几个值 ,具体的含义大家有兴趣的可以了解一下,
我只是用到了其中一个
@JSONField(serialzeFeatures=SerializerFeature.WriteMapNullValue) private String value;
这样当value的值为null的时候,依然会把它的值序列化出来。也就是下面的样子,这就是我想要的结果
{"fieldName":"project_id","operator":"is not","value":null}
转载于:https://www.cnblogs.com/AlanWilliamWalker/p/11116699.html
fastjson的使用问题相关推荐
- Jackson、FastJson快速入门(整合SpringMVC)
目录 1. 什么是 JSON 2. JSON 语法规则 3. JSON 与 JS 对象的关系 4. JSON 和 JS 对象互转 5. Jackson-数据格式转换 1. 环境搭建 2. 对象转jso ...
- FastJson 简单使用
对象.List转Json User user = new User(); /*JSON 序列化,默认序列化出的JSON字符串中键值对是使用双引号,如果需要单引号的JSON字符串, [eg:String ...
- 42. fastjson处理下划线和驼峰问题的方法和源码分析
一. 前言 在开发过程中经常遇到json解析和生成的问题,所以用自己也一直用fastjson来实现这个功能. 但是,最近遇到一个问题: json字符串里面的数据很多都是"_"下划线 ...
- fastJson结合Nutz.Mapl的进阶应用
为什么80%的码农都做不了架构师?>>> 今天要做一堆数据的序列化, 反序列化, 序列化没问题, 反序列化却遇到了点小意外, 这一堆数据不是一个类!!!!!!当然可以通过类内部 ...
- 深度对比Jackson和Fastjson,最终我还是选择了...
点击关注公众号,Java干货及时送达 来源:cnblogs.com/larva-zhh/p/11544317.html 为什么要替换fastjson 框架选型 替换fastjson Deseriali ...
- 真能一快遮百丑?为什么要弃坑FastJson
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 转自:咔咔侃技术链接:https://www.toutia ...
- fastjson 的作者,在阿里内网挨骂了?!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | 阿里云云栖号 链接 | https://yqh.aliy ...
- fastjson到底做错了什么?为什么会被频繁爆出漏洞?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 fastjson大家一定都不陌生,这是阿里巴巴的开源一个JSON解 ...
- 再见,FastJson...
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://www.toutiao.com/i681 ...
- 干掉 FastJson
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://urlify.cn/iYN3Uj 一.F ...
最新文章
- IDC公布2017年亚太地区数据中心10大预测
- Android状态栏
- 结对编程之四则运算(马仪生、李瑞恒)
- idea没有out文件夹_史上最详细没有之一的 Java JNI傻瓜级入门教程
- 【CJOJ2616】 【HZOI 2016】偏序 I(cdq分治,树状数组)
- SAP UI5 CSS 类 sapUiSmallMarginEnd 的工作和添加原理
- Array.prototype.slice.call(arguments)
- 【Flink】使用Flink实现索引数据到Elasticsearch
- leetcode探索动态规划(三)
- 前端入门 前端实战项目 JS
- TextCNN pytorch实现
- 图灵书单 双十一超低优惠来袭
- 模指数运算之python实现
- 服务器503网页报错,网页为什么出现503错误?网页503错误的解决方法
- SQL Server 2008 远程过程调用失败的问题解决方法
- 科比最新超酷广告《门徒》
- 内网渗透:八、CVE-2020-1472 NetLogon 域内提权漏洞(域控密码置空)
- 使用 NumPy 来模拟随机游走(Random Walk)
- nginx访问后端偶尔超时问题
- Linux之基础命令
热门文章
- 浏览器快捷键_用浏览器输入框代替Alfred - 介绍快速唤起浏览器输入框的方法,以及它能怎么取代 Alfred...
- 计算机接口实验1,计算机接口技术实验一.doc
- 在线提交信息 程序 php,在线短消息收发的程序,不用数据库_php基础_脚本
- jquery的四层联动插件jquerySelect
- php获取当前时间的毫秒数,并且利用它测试代码段执行时间
- 基于Pytorch再次解读GoogLeNet现代卷积神经网络
- 【Network Security!】xrdp+vnc4server+xfce4远程管理Ubuntu服务器桌面
- # 异运算_小学数学整数、小数、分数加减法运算法则及练习(可打印)
- htmlparser 获取某a标签地址_HTML常用标签
- 判断正则 shell_【US分享】Shell中的括号