编写JSON解析器以格式化饼图数据(HighCharts)

soz*_*hen 2 javascript jquery parsing json highcharts

我正在与HighCharts战斗相当于格式化series选项的数据输入.最后我看到这里的链接解决了我的数据格式化和输入问题.

HighCharts饼图可识别的数据格式(format 1)如上所示:

[["chrome",15],["firefox",20]]
Run Code Online (Sandbox Code Playgroud)

我实际上想要从外部URL输入动态数据并格式化数据,以便HighCharts可以识别它.我从URL获得的数据格式如下(format 2):

[
    {
        "status": "Stopped \/ Idle",
        "val": 17.469444444444,
    }, {
        "status": "Working",
        "val": 0,
    }, {
        "status": "Headland Turning",
        "val": 0,
    }, {
        "status": "Transport",
        "val": 0.15333333333333,
    }
]
Run Code Online (Sandbox Code Playgroud)

它已经是JSON格式.

我只是想知道的是,我有必要从写数据解析器format 2format 1?或者我错过了HighCharts可以识别JSON格式数据的东西,我实际上不需要编写解析器?

我是HighCharts的新手,所以如果我的一些问题描述没有意义,请随时指出.谢谢!

编辑:感谢所有人回答我的问题!

cha*_*tfl 6

当脚本需要特定格式的数据时,您通常必须将数据映射到适合格式.这可以在服务器代码中或使用javascript进行修改

可以使用jQuery $.map将对象或数组重新配置为另一个数组.

演示:http://jsfiddle.net/qpsSe/1

请注意,示例JSON中的尾随逗号需要删除才能验证JSON

/* "json" is your response object, modify variable names to match */
var chartData=$.map( json, function( obj,i){
        return [[ obj.status, obj.val]];                            
})
Run Code Online (Sandbox Code Playgroud)

$ .map API文档

原生javascript中的替代方法

var chartData=[];
for( i=0; i<json.length; i++){
   chartData.push( [ json[i]['status'], json[i]['val'] ])
}
Run Code Online (Sandbox Code Playgroud)