`
wenjinglian
  • 浏览: 824463 次
  • 性别: Icon_minigender_1
  • 来自: 株洲->深圳
社区版块
存档分类
最新评论

jsonlib转换树型数据没其它框架好

    博客分类:
  • JAVA
 
阅读更多

jsonlib的性能请看这篇文章:http://wangym.iteye.com/blog/738933

性能总结 写道
测试总结:

1、显而易见,无论是哪种形式的转换,Jackson > Gson > Json-lib。
Jackson的处理能力甚至高出Json-lib有10倍左右
2、JSON-lib似乎已经停止更新,最新的版本也是基于JDK15,而Jackson的社区则较为活跃;
3、在测试性能的同时,又以人肉方式对这三个类库转换的正确性 进行了检查 ,三者均达100%正确 ;
4、JSON-lib在转换诸如Date类型时较为累赘,如以下是两者的转换结果:
JSON-lib:
{"brithday":{"date":17,"day":2,"hours":9,"minutes":24,"month":7,"seconds":26,"time":1282008266398,"timezoneOffset":-480,"year":110}}
Jackson:
{"brithday":1282008123101}
5、JSON-lib依赖commons系列的包及 ezmorph包共 5个,而Jackson除自身的以外只依赖于commons-logging
6、Jackson提供完整基于节点的Tree Model,以及完整的OJM数据绑定功能。

 

现在有个树型结构的json数据,使用json-lib转换成对象,转换调试发现得到的对象有“失真”,后面对比,jackjson,fastjson,gson,结果发现只有json-lib转换出现问题。

 

下面是调试对比:

 

json格式数据:

 

{
    "attr": {
        "desc": "",
        "id": 0,
        "name": "一层",
        "parentId": -1
    },
    "data": {
        "icon": "",
        "title": "一层标题"
    },
    "children": [
        {
            "attr": {
                "desc": "",
                "id": 1,
                "name": "二层",
                "parentId": 0
            },
            "data": {
                "icon": "",
                "title": "二层标题"
            },
            "children": [
                {
                    "attr": {
                        "desc": "",
                        "id": 2,
                        "name": "三层",
                        "parentId": 1
                    },
                    "data": {
                        "icon": "",
                        "title": "三层标题"
                    },
                    "children": [
                        {
                            "attr": {
                                "desc": "",
                                "id": 3,
                                "name": "四层",
                                "parentId": 2
                            },
                            "data": {
                                "icon": "",
                                "title": "四层标题"
                            }
                        }
                    ]
                }
            ]
        }
    ]
}

 

对应java对象如下:

 

public class NodeBean {
	
    private AttributeBean attr;

    private DataBean data;

    private List<NodeBean> children;
    
}

public class AttributeBean {
	
	private Long id;

	private String name;

	private Long parentId;
	
	private String desc;

}

public class DataBean {
	
	private String title;

        private String icon;
}

 

测试代码:

//将树型json数据转换为对象
            //jsonlib 2.4 转换
            NodeBean jsonlibBean = (NodeBean) JSONObject.toBean(JSONObject.fromObject(responseStr), NodeBean.class);
            //jackson 2.1.0 转换
            ObjectMapper mapper = new ObjectMapper();
             try {
                 NodeBean jacksonToBean = mapper.readValue(responseStr, NodeBean.class);
            } catch (Exception e) {
                e.printStackTrace();
            }
            //fastjson 1.1.28 转换
             NodeBean fastJsonToBean = JSON.parseObject(responseStr, NodeBean.class);
             
            //gson 2.2.2 转换树
            Gson gson = new Gson();
            NodeBean gsonToBean = gson.fromJson(responseStr, NodeBean.class);

 

json-lib调试:注意观察在children 默认会转成MorphDynaBean,MorphdynaClass,HashMap,MorpherRegistry


 

jackson调试:



 

fastjson调试:



 

gson调试:



 

 

效率测试结果json-lib性能最差,不推荐使用

 

  • 大小: 22.2 KB
  • 大小: 19.6 KB
  • 大小: 18 KB
  • 大小: 19.4 KB
分享到:
评论

相关推荐

    生成JSON树型表结构

    总的来说,生成JSON树型表结构是将层级数据转换为易于EXT树组件解析的格式,通过合理的数据库查询和后端处理,结合前端EXT框架,可以实现高效且美观的树形数据展示。这个过程涉及到数据结构、JSON序列化、前端UI组件...

    易语言树型数据类模块

    项目可能是树型数据类模块中的核心概念,它代表树中的一个节点,包含数据和与其他节点的关系。 13. **显示树型数据类**: 显示树型数据类通常是将树型数据结构以可视化的形式呈现出来,例如在窗口控件中展示,使...

    全国省市JSON数据大全

    全国省市JSON数据,包含code level

    易语言树型数据类模块源码

    资源作者SanYe可能是易语言社区的一位活跃开发者,他的这个模块为其他易语言程序员提供了便利,减少了他们自己实现树型数据结构的工作量,从而能更专注于业务逻辑的开发。 通过学习和理解这个模块的源码,开发者...

    易语言源码树型数据类模块源码.rar

    《易语言源码树型数据类模块源码》是一个针对初学者和专业开发者的资源,主要涉及易语言编程环境下的数据结构与算法实现。易语言是中国本土开发的一种面向对象的程序设计语言,以其简单易学的特点深受广大程序员喜爱...

    树型数据结构在铁路车站信号计算机联锁系统中的应用.pdf

    在探讨“树型数据结构在铁路车站信号计算机联锁系统中的应用”这一主题时,我们首先需要了解树型数据结构的基本概念以及在铁路车站信号系统中的应用场景。树型数据结构是一类非线性数据结构,它的每一个节点可以有两...

    易语言树型数据类模块源码.zip易语言项目例子源码下载

    《易语言树型数据类模块源码》是一个适用于学习、毕业设计和小团队开发的项目实例,它提供了关于易语言中树型数据结构的操作和管理的详细实现。易语言是一种面向对象、简单易学的编程语言,其目标是降低编程门槛,让...

    网页树型结构快速加载大数据量数据的实现

    而较好地解决了大数量的树型数据在网页上树型结构加载时效率低下、延迟较长的问题。该方法在实际应用中, 取得了很好的效果。 关键词: 大数据量; 树型结构数据; 分散调度; 基于广度优先的非递归算法

    万能树型数据管理小程序

    《万能树型数据管理小程序》是一款高效、灵活的数据管理工具,特别适用于处理具有层级关系的数据。这款小程序的核心特点在于其采用树状结构来组织和管理数据,这使得用户能够清晰地查看和操作多级分类的数据,从而...

    易语言树型数据类模块源码.zip

    "易语言树型数据类模块源码.zip" 是一个包含易语言编写的树型数据结构模块的源代码文件。这个压缩包可能包含了一个或多个易语言源文件,这些文件用于实现树型数据结构的功能,以便在程序中处理和存储层次化数据。 ...

    树型数据结构在测井软件中的应用.pdf

    标题《树型数据结构在测井软件中的应用》表明了文章的主题是讨论在测井软件中应用树型...同时,由于树型数据结构具有很好的层次性和递归性,因此在处理具有明显层级关系的数据时,它能提供非常直观和高效的解决方案。

    日常方便源码-JSON解析-树型显示-易语言

    本文将深入探讨“日常方便源码-JSON解析-树型显示-易语言”这一主题,它涉及到如何利用易语言进行JSON数据的解析,并以树型结构进行显示。 易语言是一种中国本土化、简单易学的编程语言,其设计目标是降低编程门槛...

    使用冗余数据设计树型关系的数据结构.pdf

    树型数据结构在文件系统、XML文档、JSON对象、组织架构图等场景中有广泛应用。了解这些应用场景有助于理解在哪些情况下使用冗余数据可能是有益的。 6. 数据库索引技术 在树型数据结构中,合理的索引技术可以大幅...

    树型数据结构的探讨.pdf

    树型数据结构是一种在计算机科学中广泛使用的基本数据结构,它模拟了现实世界中的层次关系。树由节点组成,节点间存在分支,每个节点可以拥有零个或多个子节点。树型数据结构中的一个重要概念是“根节点”,它是整个...

    基于树型数据结构的双足机器人步行三维仿真.pdf

    因此,本文作者认为使用一种新的树型数据结构可以更好地用于描述双足机器人的结构,并实现其三维仿真。 树型数据结构在计算机科学中是一种广泛应用的数据结构,它类似于一棵倒挂的树,具有一个根节点,每个节点有...

    树型数据结构中递归算法的实现.pdf

    树型数据结构是计算机科学中的一种基本数据结构,它以递归的方式模拟了自然界中树木的结构,以节点为基本元素构成,节点间具有明确的父子关系。在树型结构中,递归算法的应用广泛且重要,它通过函数自我调用的方式,...

    delphi 树型控件自动根据数据集生成树型结构

    在 Delphi 开发环境中,树型控件(TTreeview)是一种常见的用户界面元素,用于显示层次化的数据。本文将详细讲解如何在 Delphi7 中使用树型控件,并自动根据数据集生成树型结构。 首先,理解 TTreeView 控件的基本...

    网页树型结构快速加载大数据量数据的实现.

    在IT领域,尤其是在Web开发中,处理大数据量的树型结构是常见的需求,尤其是在构建复杂的用户界面或数据展示时。本文将深入探讨如何在网页上高效地实现树型结构的大数据量加载,这是一个对性能有高要求的任务,涉及...

    zTreedemo树型加载数据

    在IT行业中,树型结构是一种常见的数据表示方式,它能够有效地组织和展示层次关系的数据。在Web开发领域,实现树型加载数据的功能是构建多层级菜单、文件系统、组织架构等场景的重要技术手段。"zTree"是一款基于...

Global site tag (gtag.js) - Google Analytics