• @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类型的字段来格式化时间格式比较有用。
  • serializedeserialize是布尔类型的,用法为
@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的使用问题相关推荐

  1. Jackson、FastJson快速入门(整合SpringMVC)

    目录 1. 什么是 JSON 2. JSON 语法规则 3. JSON 与 JS 对象的关系 4. JSON 和 JS 对象互转 5. Jackson-数据格式转换 1. 环境搭建 2. 对象转jso ...

  2. FastJson 简单使用

    对象.List转Json User user = new User(); /*JSON 序列化,默认序列化出的JSON字符串中键值对是使用双引号,如果需要单引号的JSON字符串, [eg:String ...

  3. 42. fastjson处理下划线和驼峰问题的方法和源码分析

    一. 前言 在开发过程中经常遇到json解析和生成的问题,所以用自己也一直用fastjson来实现这个功能. 但是,最近遇到一个问题: json字符串里面的数据很多都是"_"下划线 ...

  4. fastJson结合Nutz.Mapl的进阶应用

    为什么80%的码农都做不了架构师?>>>    今天要做一堆数据的序列化, 反序列化, 序列化没问题, 反序列化却遇到了点小意外, 这一堆数据不是一个类!!!!!!当然可以通过类内部 ...

  5. 深度对比Jackson和Fastjson,最终我还是选择了...

    点击关注公众号,Java干货及时送达 来源:cnblogs.com/larva-zhh/p/11544317.html 为什么要替换fastjson 框架选型 替换fastjson Deseriali ...

  6. 真能一快遮百丑?为什么要弃坑FastJson

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 转自:咔咔侃技术链接:https://www.toutia ...

  7. fastjson 的作者,在阿里内网挨骂了?!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | 阿里云云栖号 链接 | https://yqh.aliy ...

  8. fastjson到底做错了什么?为什么会被频繁爆出漏洞?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 fastjson大家一定都不陌生,这是阿里巴巴的开源一个JSON解 ...

  9. 再见,FastJson...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://www.toutiao.com/i681 ...

  10. 干掉 FastJson

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://urlify.cn/iYN3Uj 一.F ...

最新文章

  1. IDC公布2017年亚太地区数据中心10大预测
  2. Android状态栏
  3. 结对编程之四则运算(马仪生、李瑞恒)
  4. idea没有out文件夹_史上最详细没有之一的 Java JNI傻瓜级入门教程
  5. 【CJOJ2616】 【HZOI 2016】偏序 I(cdq分治,树状数组)
  6. SAP UI5 CSS 类 sapUiSmallMarginEnd 的工作和添加原理
  7. Array.prototype.slice.call(arguments)
  8. 【Flink】使用Flink实现索引数据到Elasticsearch
  9. leetcode探索动态规划(三)
  10. 前端入门 前端实战项目 JS
  11. TextCNN pytorch实现
  12. 图灵书单 双十一超低优惠来袭
  13. 模指数运算之python实现
  14. 服务器503网页报错,网页为什么出现503错误?网页503错误的解决方法
  15. SQL Server 2008 远程过程调用失败的问题解决方法
  16. 科比最新超酷广告《门徒》
  17. 内网渗透:八、CVE-2020-1472 NetLogon 域内提权漏洞(域控密码置空)
  18. 使用 NumPy 来模拟随机游走(Random Walk)
  19. nginx访问后端偶尔超时问题
  20. Linux之基础命令

热门文章

  1. 浏览器快捷键_用浏览器输入框代替Alfred - 介绍快速唤起浏览器输入框的方法,以及它能怎么取代 Alfred...
  2. 计算机接口实验1,计算机接口技术实验一.doc
  3. 在线提交信息 程序 php,在线短消息收发的程序,不用数据库_php基础_脚本
  4. jquery的四层联动插件jquerySelect
  5. php获取当前时间的毫秒数,并且利用它测试代码段执行时间
  6. 基于Pytorch再次解读GoogLeNet现代卷积神经网络
  7. 【Network Security!】xrdp+vnc4server+xfce4远程管理Ubuntu服务器桌面
  8. # 异运算_小学数学整数、小数、分数加减法运算法则及练习(可打印)
  9. htmlparser 获取某a标签地址_HTML常用标签
  10. 判断正则 shell_【US分享】Shell中的括号