D3.js以及通用JS(JavaScript)读取并解析服务器端JSON的注意事项

这个需求其实挺明确的,但是网上搜出来的教程都乱七八糟,觉得实在需要自己总结一下。

D3.js目前已经被广泛使用在数据可视化领域,随着大数据的持续发展,这个框架估计会在今后更加流行(据说其作者Mike
Bostock
开始全职开发了,之前是负责纽约时报数据可视化的工程师,他本人也从纽约搬家到了旧金山……)。按照这里的介绍:https://github.com/mbostock/d3/wiki/API-Reference,D3.js实际上有专门读取JSON数据的API,所以其实D3.js读服务器端发布的JSON是非常简单的事情,这里我给出一段示例代码:

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不了解,所以用这种方法稍微深入了解一下。下面针对后面这些语句进行一些讨论:

按照网上各种教程的介绍,从服务器端取到的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]这种数组操作首先把大括号或者字段名先取出来。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-29 08:29:27

D3.js以及通用JS(JavaScript)读取并解析服务器端JSON的注意事项的相关文章

JS夯实基础:Javascript 变态题解析 (上)

["1", "2", "3"].map(parseInt) 1.知识点: Array/map Number/parseInt Global_Objects/parseInt JavaScript parseInt 首先,map接受两个参数,一个回调函数 callback, 一个回调函数的this值.其中,回调函数接受三个参数 currentValue.index.arrary(当前值,索引,整个数组):而题目中,map只传入了回调函数:parse

JS夯实基础:Javascript 变态题解析 (下)

function sidEffecting(ary) { ary[0] = ary[2]; } function bar(a,b,c) { c = 10 sidEffecting(arguments); return a + b + c; } bar(1,1,1) 16.这是一个大坑,尤其是涉及到 ES6语法的时候.知识点: Functions/arguments 首先 The arguments object is an Array-like object corresponding to t

JS 语言核心(JavaScript权威指南第六版)(阅读笔记)

前言: 对于程序员,学习是无止境的,知识淘换非常快,能够快速稳固掌握一门新技术,是一个程序员应该具备的素质.这里将分享本人一点点不成熟的心得. 了解一门语言,了解它的概念非常重要,但是一些优秀的设计思想需要细心和大量实践才能慢慢参悟,在这之前需要做的是能够运用它来开发,那么了解一些基础特性非常有必要,通常这些特性是需要经验积累,从各种坑中累计出来,但是还有一种看似很笨却很有效的学习方法.那就是将别人的经验记录下来,有事没事都拿出来看看,集合开发中的经验,这会非常有效. 调试工具 firebug

多说【最近访客】JS插件通用代码使用方法

多说[最近访客]JS插件通用代码使用方法 多说[最近访客]JS插件可以显示近期访问过你的博客并且已经使用向多说授权过的社交网络账号登录的用户头像,效果如下图所示. 最近访客JS插件的添加步骤如下: 1. 添加多说公用JS代码,每个页面只需添加一次. <!--多说js加载开始,一个页面只需要加载一次 --> <script type="text/javascript"> var duoshuoQuery = {short_name:"您的多说二级域名&q

jQuery Ajax通用js封装

第一步:引入jQuery库 <script type="text/javascript" src="<%=path%>/resources/js/jquery.min.js"></script> 第二步:开发Ajax封装类,已测试通过,可以直接调用,直接贴代码,讲解就省了 /***************************************************************** jQuery Ajax封装

通用js函数集锦&lt;来源于网络&gt; 【二】

通用js函数集锦<来源于网络> [二] 1.数组方法集2.cookie方法集3.url方法集4.正则表达式方法集5.字符串方法集6.加密方法集7.日期方法集8.浏览器检测方法集9.json方法10.extend方法11.类型判断的方法 数组方法集 Angela.array = { //# 数组方法 // index, 返回位置! 不存在则返回 -1: index: function (t, arr) { //# 返回当前值所在数组的位置 if (arr.indexOf) { return ar

ProtoBuf.js – Protocol Buffers的Javascript实现(转)

原文链接:ProtoBuf.js – Protocol Buffers的Javascript实现 推荐前端网址:http://keenwon.com/ 在Javascript里比较常见的数据格式就是json,xml,但是这两种格式在数据传输方面有明显不足.而Protocol Buffers可以很好的解决这个问题,下面引用百科的对Protocol Buffers的定义: Protocol Buffers是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储.通

JavaScript 之 动态加载JS代码或JS文件

2.动态加载JS文件 <script type="text/javascript"> function loadScript(url, callback) { var script = document.createElement("script"); script.type = "text/javascript"; if(typeof(callback) != "undefined"){     if (scri

蓝鸥原生JS:js的历史及JavaScript的优缺点

蓝鸥原生JS:js的历史及JavaScript的优缺点 蓝鸥零基础学习HTML5-html+css基础 http://11824614.blog.51cto.com/11814614/1852769 JS介绍 js的历史 在上个世纪的1995年,当时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的第一代互联网公司. 由于网景公司希望能在静态HTML页面上添加一些动态效果,于是叫Brendan Eich这哥们在两周之内设计出了JavaScript语言.你没看错,这哥们只用了1