将Json数据转换为ADO.NET DataSet对象
2015-02-02 14:57
302 查看
将Json数据转换为ADO.NET DataSet对象
Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据。但是有些情况下DataSet Converter并不管用,而且也不一定能够满足项目需要。这里介绍另一种简单有效的方法,能够方便快速地将Json数据转为ADO.NET DataSet。设计
事实上Newtonsoft.Json已经提供了一套完整的Json数据文档结构,Newtonsoft.Json.Linq命名空间下提供了这种文档结构的对象模型,因此我们可以借用这样的模型,在其上应用访问者(Visitor,GoF95)模式,对树状结构的对象模型进行遍历,以达到ADO.NET DataTable、DataRelation的创建以及DataSet的生成。基本对象模型如下:其实实现起来还是非常简单的,我已经把完整的项目和单元测试开源到GitHub上。具体的代码可以参考https://github.com/daxnet/Json2DataSet开源项目。
性能
性能方面,在实现的过程中,我发现有两个地方是性能瓶颈:正则表达式
JToken.Path属性
如果在你的代码中需要高频率地反复调用这两种操作,那么你就需要考虑性能问题。尤其是JToken.Path属性,它的内部实现牵涉到链表数据结构、复杂循环等,因此效率不是很高,应该尽量避免使用这一属性(当然我开源的代码中还有一处在调用该属性,可以进一步优化)。
另一方面,对于ADO.NET DataTable和DataRelation的构建,性能还是相当高的,无需担心。总体上看,将15MB的Json数据转换为DataSet仅需4秒左右,有兴趣的朋友还可以在该代码基础上进一步优化。
调用
在该开源项目主页上已经说明了调用方式。很简单:应用
TIBCO Spotfire是一种世界先进的数据分析软件,不仅功能强大,还可以为其定制数据导入插件,方便地将外部数据导入其中进行分析。它是以表的形式对数据进行整合和分析的,因此,它对ADO.NET DataSet的支持是非常好的,能够很方便地将ADO.NET DataSet中所包含的表数据导入。现有一个RESTful API,它能够获取全世界所有国家的列表信息,包括国家名称、语言、人口、与该国接壤的国家数量等等。该API的地址是:
导入数据后,我可以立刻分析出哪个国家人口比重最大,哪个国家与其接壤的国家数量最多:
看,我国不仅人口最多(占世界人口的19%),而且与我国接壤的国家数量最多(15个)。
分类: 技术应用, 设计模式
相关文章推荐
- 将Json数据转换为ADO.NET DataSet对象
- ASP.NET中实现把Json数据转换为ADO.NET DataSet对象
- 将Json数据转换为ADO.NET DataSet对象
- ASP.NET中实现把Json数据转换为ADO.NET DataSet对象
- ADO.NET—Asp.net 用DataSet对象更新数据(SqlDataAdapter)
- ADO.NET—Asp.net 用DataSet对象更新数据(SqlDataAdapter)
- json数据与JAVA数据的转换 jsonJavaBean.netApache 自己编写了一个工具类,处理页面提交json格式数据到后台,再进行处理成JAVA对象数据 1、DTO:Data T
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- Flex AS3与 ADO.NET Entity Framework 实体对象数据类型转换(转)
- 使用Javascript/jQuery将javascript对象转换为json格式数据 - 海涛的CSDN博客 - 博客频道 - CSDN.NET
- ASP.NET DataSet查询结果转换为JSON格式数据
- 使用ADO.net转换数据到Excel格式并提供下载
- ADO.NET中DataSet、DataTable、DataRow的数据复制方法
- 深入分析ADO.NET中的DataSet对象
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(9):服务器端和客户端数据类型的自动转换:DataTable和DataSet
- 增补透视一文:将ADO.NET或Webservice返回的DataSet转换成ADODB.Recordset
- Asp.net 用DataSet对象更新数据(SqlDataAdapter)
- C#高级编程(第3版)23.8.1 将ADO.NET数据转换为XML文档(1)
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(9):服务器端和客户端数据类型的自动转换:DataTable和DataSet
- 深入分析ADO.NET中的DataSet对象