D3.js以及通用JS(JavaScript)读取并解析server端JSON的注意事项
这个需求事实上挺明白的。可是网上搜出来的教程都乱七八糟,认为实在须要自己总结一下。
D3.js眼下已经被广泛使用在数据可视化领域,随着大数据的持续发展,这个框架预计会在今后更加流行(据说其作者Mike
Bostock開始全职开发了。之前是负责纽约时报数据可视化的project师。他本人也从纽约搬家到了旧金山……)。
依照这里的介绍:https://github.com/mbostock/d3/wiki/API-Reference,D3.js实际上有专门读取JSON数据的API。所以事实上D3.js读server端公布的JSON是很easy的事情,这里我给出一段演示样例代码:
d3.json("http://localhost:8080/XXXX/datasource/HTTP",
function handle_json_data(data){
console.log(data)
console.log(data.results[0]);
var series=data.results[0].series;
var contents=series[0];
var values=contents.values
console.log(values);
});
后面这些语句是我在測试过程中用来调试用的,由于实在对JS不了解。所以用这样的方法略微深入了解一下。以下针对后面这些语句进行一些讨论:
依照网上各种教程的介绍,从server端取到的JSON字符串应该先使用eval函数转成JS可以处理的JSON对象,如以下几篇博客:http://blog.csdn.net/beyond0851/article/details/9285771 以及 http://www.cnblogs.com/fishtreeyu/archive/2011/11/05/2237190.html ,当中第一篇博客最后的结论看得我也是醉了。
可是我们看到上面的代码中并没有转换的过程。能够觉得D3.js已经封装了上述处理过程。另外。对于一些复杂的JSON结构,应该怎么样进行处理呢?我上面代码中处理的JSON数据例如以下所看到的:
{
"results": [
{
"series": [
{
"name": "HTTP",
"columns": [
"time",
"durationTime"
],
"values": [
[
"2015-06-18T07:31:44.514Z",
23137050
],
[
"2015-06-18T07:31:46Z",
200
],
[
"2015-06-18T07:31:46.123Z",
300
],
[
"2015-08-08T18:33:50.61Z",
763
],
[
"2015-08-08T18:33:51.505Z",
10628
],
[
"2015-08-08T18:33:53.31Z",
43
],
[
"2015-08-08T18:34:00.223Z",
285
],
[
"2015-08-08T18:34:02.184Z",
1491
],
[
"2015-08-08T18:34:02.295Z",
43
],
[
"2015-08-08T18:34:03.839Z",
36
],
[
"2015-08-08T18:34:04.179Z",
1174
],
[
"2015-08-09T06:33:51.622Z",
768
],
[
"2015-08-09T06:33:52.511Z",
11371
],
[
"2015-08-09T06:33:54.721Z",
42
],
[
"2015-08-09T06:33:56.031Z",
98
],
[
"2015-08-09T06:33:57.969Z",
33
],
[
"2015-08-09T06:34:03.951Z",
1376
]
]
}
]
}
]
}
大家能够结合我上面的代码看一下处理过程,实际上记住一条原则就能够:字段名前面是大括号的,直接用“.”号取,有中括号的情况下。要用[0],[1]这样的数组操作首先把大括号或者字段名先取出来。
D3.js以及通用JS(JavaScript)读取并解析server端JSON的注意事项的更多相关文章
- JavaScript用JQuery呼叫Server端方法
准备好Server端的方法 [System.Web.Services.WebMethod] public static string VeryUserName(string name) { strin ...
- JS夯实基础:Javascript 变态题解析 (下)
function sidEffecting(ary) { ary[] = ary[]; } function bar(a,b,c) { c = sidEffecting(arguments); ret ...
- JS夯实基础:Javascript 变态题解析 (上)
["].map(parseInt) 1.知识点: Array/map Number/parseInt Global_Objects/parseInt JavaScript parseInt ...
- JS 语言核心(JavaScript权威指南第六版)(阅读笔记)
前言: 对于程序员,学习是无止境的,知识淘换非常快,能够快速稳固掌握一门新技术,是一个程序员应该具备的素质.这里将分享本人一点点不成熟的心得. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思 ...
- 通用js函数集锦<来源于网络> 【二】
通用js函数集锦<来源于网络> [二] 1.数组方法集2.cookie方法集3.url方法集4.正则表达式方法集5.字符串方法集6.加密方法集7.日期方法集8.浏览器检测方法集9.json ...
- 毫无保留开源我写的:IOS Android Ipad 多点触摸通用js 库
毫无保留开源我写的:IOS Android Ipad 多点触摸通用js 库 在线演示地址: http://m.yunxunmi.com/ 支持 IOS Android Ipad 等不同操作系统的手持或 ...
- jQuery Ajax通用js封装
第一步:引入jQuery库 <script type="text/javascript" src="<%=path%>/resources/js/jqu ...
- 【翻译】在Ext JS 6通用应用程序中使用既共享又特定于视图的代码
原文:Using Both Shared and View-Specific Code in an Ext JS 6 Universal App 在本文,在展示如何编写Ext JS 6通用应用程序代码 ...
- js操作cookie(创建、读取、删除)方法总结
js操作cookie,可以通过开源的插件实现,方便快捷,兼容性好,同样也可以自己写: 此文主要介绍两个常用的插件: Js.cookie.js 和 jQuery.cookie.js 0.Js.cooki ...
随机推荐
- Direct2D开发:向 MFC 项目添加 Direct2D 对象
0X01 创建 MFC 应用程序: 在“文件”菜单上指向“新建”,然后单击“项目”. 在“新建项目”对话框左窗格的“已安装的模板”下,展开“Visual C++”,然后选择“MFC”. 在中间窗格中, ...
- 洛谷—— P1080 国王游戏
https://www.luogu.org/problem/show?pid=1080 题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右手上面分别写下一个整 ...
- subline Text3 安装及汉化
因为自己的subline 有问题 所以决心重新改一下了. 三步: http://www.sublimetext.com/3 官网下载subline3 https://www.imjeff. ...
- 51Nod——N1284 2 3 5 7的倍数
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1284 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 ...
- winedt (latex 编译器)解决中文的问题(CJK & CTEX)
主要是导入相关的库支持: 1. CJK \usepackage{CJK}:CJK,是中日韩的英文首字母的组合,处理中文需要先导入这个包: \begin{CJK*}{GBK}{song}:默认句式,表示 ...
- node event中 on emit off 的封装
事件绑定一个事件名称对应多个事件函数 应此它们的关系是一对多的关系 数据类型采用对象的形式 key:val 因为函数有多个 所以val选用数组 事件仓库 eventList = { key:val, ...
- 【习题 3-12 UVA - 11809】Floating-Point Numbers
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] \(A*10^B = temp[M]*2^{2^E-1}\) 两边取一下对数 得到 \(lg_A+B = lg_{temp[M]} ...
- HDU 2147kiki's game
KIKI和zz一起玩跳棋游戏,KIKI先.跳棋棋盘有n行m列.在顶行的最右侧位置放上一枚硬币.每次每个人可以把硬币移动到左边,下边或是左下边的空格中.最后不能移动硬币的那个人将输掉比赛. P点:即必败 ...
- 2、应用程序及驱动-poll和select使用说明
1.poll机制(如果中断机制出问题了,poll机制是对中断机制的补充,比如等一个小孩,如果小孩生病了,因此隔一段时间应该去找他) poll机制就是给定一段时间,在这一段时间内程序处于睡眠状态一直等待 ...
- 工欲善其事必先利其器--------搭建Android平台
工欲善其事必先利其器--------搭建Android平台 1.1 安装JDK 在Eclipse的开发过程中需要JDK或JRE的支持,否则会报错. (1) 下载JDK(建 ...