上次把原生json替换成了fastjson,发生很多地方不兼容,对这个也做了一些总结:

1、对于没有赋值的变量处理,json-lib会根据类型给出相应初始值,而fastjson直接忽略这个字段。
解决方式:转换时传入两个参数:SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty
加入WriteMapNullValue后,这个字段将不会被忽略,但是值是null,
加入WriteNullStringAsEmpty,将null改成空字符串。
针对数字、布尔类型,还有WriteNullNumberAsZero、WriteNullBooleanAsFalse等。
 
2、对于斜杠的处理,json-lib会将“/”转义成“\/”,而fastjson保持原样。
解决方式:如果要让fastjson对于斜杠进行转义,在转换时传入参数:SerializerFeature.WriteSlashAsSpecial。
 
3、fastjson的引用,当List里有多个元素的某些属性值相同,后面元素的属性会引用第一个元素的属性,里面的值会写成类似$ref:$.members[0].reportTo的形式,这样可以减少数据量,但是有时候引用无法被识别。
解决方式:转换时传入SerializerFeature.DisableCircularReferenceDetect参数,关闭引用,结果和json-lib的方式相同。
 
4、对于getter方法的识别。tYbdm这样的字段,用MyEclipse自动生成的get方法是gettYbdm,json-lib能够识别,但fastjson不行。
解决方式:严格的驼峰命名方式,比如getTYbdm
或者在属性上面加上@JSONField注解

fastjson和json-lib的区别的更多相关文章

  1. json 中关于json数组跟json对象的区别

    原文地址:http://blog.csdn.net/lafengwnagzi/article/details/52789171 JSON 是存储和交换文本信息的语法 JSON 文本格式在语法上与创建 ...

  2. 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】

    [原创文章,转载请注明出处] 个人使用比较习惯的json框架是fastjson,所以spring boot默认的json使用起来就很陌生了,所以很自然我就想我能不能使用fastjson进行json解析 ...

  3. JavaScript的Eval与JSON.parse的区别

    JavaScript的Eval与JSON.parse的区别 json的定义以及用法: JSON(JavaScript Object Notation)是一种轻量级的数据格式,采用完全独立于语言的文本格 ...

  4. Json lib集成stucts2的使用方法 抛出 NestableRuntimeException异常的解决办法

    首先贴出struts 2.3.16需要导入的包 因为使用的是2.3 版本,必须要导入这个包,否则会报java.lang.NoClassDefFoundError: org/apache/commons ...

  5. 使用JsonConfig控制JSON lib序列化

    将对象转换成字符串,是非常常用的功能,尤其在WEB应用中,使用 JSON lib 能够便捷地完成这项工作.JSON lib能够将Java对象转成json格式的字符串,也可以将Java对象转换成xml格 ...

  6. FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换

    fastJson对于json格式字符串的解析主要用到了一下三个类: JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换. JSONObject:fas ...

  7. Jquery里面种的 JSON.parse() 与JSON.stringify() 的区别

    JSON.parse()与JSON.stringify()的区别   JSON.parse()[从一个字符串中解析出json对象] Demo: //定义一个字符串 var data='{"N ...

  8. eval()和JSON.parse()的区别

    我们将一个josn字符串解析为对象的时可以使用两种方法: 假设有一个json字符串: '{ "student" : [ {}, {}, {} ] }' 然后解析为对象: 1.eva ...

  9. fastjson转换json字符串key的首字母小写变大写的解决办法

    https://blog.csdn.net/erbao_2014/article/details/53688934 问题描述在开发过程中,由于接口文档的描述,要求json字符串的key首字母为大写,而 ...

  10. json.stringify()的妙用,json.stringify()与json.parse()的区别

    一.JSON.stringify()与JSON.parse()的区别 最近做项目,发现JSON.stringify()使用场景真的挺多,我们都知道JSON.stringify()的作用是将 JavaS ...

随机推荐

  1. 向数据库中导入AWR数据

    使用$ORACLE_HOME/rdbms/admin/awrload.sql $ sqlplus '/as sysdba' SQL*Plus: Release Production on Fri No ...

  2. 移动端<head>头部 常用<meta>标签

    <!DOCTYPE html><html lang = ""><head> <title></title> <me ...

  3. Java数据类型和对象的引用

    在Java中,变量分为两类: 1.基本类型变量,java是传递的副本 2.一切对象型变量,传引用副本的实质是复制指向地址的指针 a.基本类型引用 public class BasicTransmit ...

  4. Emmet 的使用

    Emmet 的介绍 Emmet 的前身叫做:Zen Coding,也许熟知旧名的人不在少数.Emmet 一般前端工程师用得比较多,具体它是做什么的,我们通过下面两张 Gif 演示图来说明: Intel ...

  5. demo14

    /Users/alamps/AndroidStudioProjects/Demo12SimpleAdapter/Demo12SimpleAdapter/src/main/res/layout/tabl ...

  6. springmvc+spring+mybatis分页查询实例版本2.0

    先在改成纯利用js进行分页,首先查询出所有记录,初始化通过jquery控制只知显示首页内容,创建页面切换功能的函数,每次显示固定的内容行并把其他内容行隐藏,这样只需要一次提交就可以实现分页,但是仍有缺 ...

  7. 夺命雷公狗mongodb之----mongodb---3---比较操作符

    $lt    <  less than 小于 $lte   <=  less than and equal 小于等于 $gt    >   greater than 大于 $gte ...

  8. google pinyin elmentary os

    sudo apt-get install software-properties-common for ppa. I have been using Sun Pinyin for quite a lo ...

  9. OpenStack 新加计算节点后修改

    Contents [hide] 1 前提 2 iptables禁止snat= 3 vlan支持 4 Quota支持 5 修改物理资源设置. 6 添加collectd 7 重启服务 前提 我们使用fue ...

  10. android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)

    1.因为给LISTVIEW增加了两个头布局,所以在点击事件ITEM索引会增加2,比如原来第一条数据的索引应该为0,增加两个头布局后,它的索引变为        2,为了使LISTVIEW的ITEM在点 ...