Java中json工具对比分析
<p align="center"><a class="replace_word" title="Java EE知识库" href="http://lib.csdn.net/base/javaee" target="_blank">Java中几个json工具分析 <p align="left">1,?环境 <p align="left">JDK1.6+IDE(IntelliJ IDEA)+windowsXP+GBK编码 <p align="left">2,分析对象 <p align="left">jackson1.8.2?<a href="http://jackson.codehaus.org/">http://jackson.codehaus.org/ <p align="left">gson1.7.1?<a href="http://code.google.com/p/google-gson/">http://code.google.com/p/google-gson/ <p align="left">jsob_lib2.4?<a href="http://json-lib.sourceforge.net/">http://json-lib.sourceforge<a class="replace_word" title=".NET知识库" href="http://lib.csdn.net/base/dotnet" target="_blank">.NET/? <p align="left">3,使用实例 <p align="left">?????????用两个bean进行<a class="replace_word" title="软件测试知识库" href="http://lib.csdn.net/base/softwaretest" target="_blank">测试,两个bean都嵌套有数组和对象,唯一的区别是一个属性全部小写开头,另一个属性全部大写开头,bean里面都有setter和getter。 <p align="left">JBean代码如下: <p align="left">? <div class="dp-highlighter bg_java"> <div class="bar"> <div class="tools"> [java]?<a class="ViewSource" title="view plain" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">view plain?<a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">copy ?
<p align="left">JBean2代码如下: <p align="left">把JBean的属性头字母全部改成小写,然后用IDE自动生成setter和getter。 <p align="left">? <p align="left">Jackson使用实例 <p align="left">(Json to bean) <p align="left">? <div class="dp-highlighter bg_java"> <div class="bar"> <div class="tools"> [java]?<a class="ViewSource" title="view plain" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">view plain?<a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">copy ?
<p align="left">? <p align="left">(Bean to json) <p align="left">? <div class="dp-highlighter bg_java"> <div class="bar"> <div class="tools"> [java]?<a class="ViewSource" title="view plain" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">view plain?<a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">copy ?
<p align="left">? <p align="left">嵌套使用List和Object的情况下,jackson依然能准确转换,唯一不足之处就是无论bean属性的开头字符是大写还是小写,被jackson转换成字符串后首字母都是小写的了。 <p align="left">Gson使用实例 <p align="left">(json to bean) <p align="left">? <div class="dp-highlighter bg_java"> <div class="bar"> <div class="tools"> [java]?<a class="ViewSource" title="view plain" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">view plain?<a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">copy ?
<p align="left">? <p align="left">(bean to json) <p align="left">? <div class="dp-highlighter bg_java"> <div class="bar"> <div class="tools"> [java]?<a class="ViewSource" title="view plain" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">view plain?<a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">copy ?
<p align="left">? <p align="left">使用很简单,bean小写字母开头时,由json转bean才能成功。 <p align="left">JSON_LIB使用实例 <p align="left">(json to bean) <p align="left">? <div class="dp-highlighter bg_java"> <div class="bar"> <div class="tools"> [java]?<a class="ViewSource" title="view plain" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">view plain?<a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">copy ?
<p align="left">(bean to json) <p align="left">? <div class="dp-highlighter bg_java"> <div class="bar"> <div class="tools"> [java]?<a class="ViewSource" title="view plain" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">view plain?<a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/weinianjie1/article/details/6561788#">copy ?
<p align="left">? <p align="left">对嵌套List和Object支持不够好,我调试嵌套的时候没有成功,时间关系也没来得及细细找原因,不过之前有使用过,这个工具最大的好处是,无论json字符串嵌套的是数组还是对象,使用JSONObject.fromObject或者JSONArray.fromObject转换后一律分别转换成对象和数组了,对操作是比较方便的,但是却改变了json原来的<a class="replace_word" title="算法与数据结构知识库" href="http://lib.csdn.net/base/datastructure" target="_blank">数据结构。 <p align="left">4,性能对比 <p align="left">之前没有做过性能测试这样的工作,于是网上搜索了达人的研究成果,地址<a href="http://wangym.iteye.com/blog/738933">http://wangym.iteye.com/blog/738933 <p align="left">? <p align="left">简单的说就是性能方面jackson >??gson??>??json-lib。其中gson比json-lib性能略高一点,jacks性能高出json-lib有10倍。 <p align="left">5,总结 <p align="left">? <p align="left">还有一点忘记补充了,jackson和gson都可以独立使用,而json-lib是依赖其他五个包的,json-lib官网原话 <p align="left">Json-lib requires (at least) the following dependencies in your classpath: <p align="left">jakarta commons-lang 2.5 <p align="left">jakarta commons-beanutils 1.8.0 <p align="left">jakarta commons-collections 3.2.1 <p align="left">jakarta commons-logging 1.1.1 <p align="left">ezmorph 1.0.6 <p align="left">这些类库据说在struts2里面都有。无语json-lib了,性能低不说,还依赖那么多类库,转换也不是很方便。 <p align="left">强力推荐使用jackson和gson,我测试用的源代码<a href="http://download.csdn.net/source/3386315">http://download.csdn.net/source/3386315,时间太急了简单总结下,希望下次遇到json的时候能反映迅速点,有什么写错了希望纠正,谢谢! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |