上次把原生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. HTML-移动端如何使用css让百分比布局的弹窗水平和垂直方向上居中

    pc端让一个弹窗水平和垂直方向居中,在知道弹窗宽高的情况下很好计算,只需要用如下css即可: #date{ width: 300px; height: 300px; position: absolut ...

  2. centos6关闭ipv6

    Install packages for CentOS 6.0 Minimal cat <<EOF>>/etc/modprobe.d/disable_ipv6.conf ali ...

  3. apache allow和deny

    转自 http://www.cnblogs.com/top5/archive/2009/09/22/1571709.html 影响最终判断结果的只有两点: 1. order语句中allow.deny的 ...

  4. mongodb查询文档

    说到查询,我们一般就想起了关系型数据库的查询了,比如:order by(排序).limit(分页).范围查询(大于某个值,小于某个值..,in查询,on查询,like查询等待很多),同样mongodb ...

  5. redhat vim编辑器永久添加行号

    cd ~ vim .vimrc 第一行加入: set nu :wq 保存退出,即可 如果想取消设置,同理删除set nu即可

  6. Swift游戏实战-跑酷熊猫 00 游戏预览

    这个系列我们将要一起来做一个这样的游戏

  7. WebService的简单应用

    具体看项目源文件:包含: ip地址查询, QQ在线状态查询,和自定义的MD5 破解和加密(呵呵有形无势...) http://pan.baidu.com/s/1bn09WQj SOAP 1.1 The ...

  8. android开发之如何使TabHost的TabWidget位于屏幕下方

    更改TabHost里的第一个LinearLayout为RelativeLayout.并在TabWidget中添加android:layout_alignParentBottom="true& ...

  9. 服务器 CentOS上yum安装Nginx服务

    一.更改yum源为网易的源加快速度 vi /etc/yum.repos.d/CentOS-Base.repo 更改内容如下 # CentOS-Base.repo # # This file uses ...

  10. 封装smarty类

    <?php/** * Project:     Smarty: the PHP compiling template engine * File:        Smarty.class.php ...