Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用JSON将劳工统计局的数据转换成图表?_Javascript_Jquery_Json_Highcharts - Fatal编程技术网

Javascript 如何使用JSON将劳工统计局的数据转换成图表?

Javascript 如何使用JSON将劳工统计局的数据转换成图表?,javascript,jquery,json,highcharts,Javascript,Jquery,Json,Highcharts,Highcharts提供了一些关于如何将JSON文件合并到图表中的好例子,但它们的例子都是 这是我想做的 以JSFiddle()为例: HTML: 并用BLS中的文件()替换数据: { "status": "REQUEST_SUCCEEDED", "responseTime": 16, "message": [ ], "Results": [ { "series": [ { "seriesID": "LAUCN040010000000005",

Highcharts提供了一些关于如何将JSON文件合并到图表中的好例子,但它们的例子都是

这是我想做的

以JSFiddle()为例:

HTML:

并用BLS中的文件()替换数据:

{
  "status": "REQUEST_SUCCEEDED",
  "responseTime": 16,
  "message": [

  ],
  "Results": [
{
  "series": [
    {
      "seriesID": "LAUCN040010000000005",
      "data": [
        {
          "year": "2013",
          "period": "M11",
          "periodName": "November",
          "value": "16393",
          "footnotes": [
            {
              "code": "P",
              "text": "Preliminary."
            }
          ]
        },
        {
          "year": "2013",
          "period": "M10",
          "periodName": "October",
          "value": "16536",
          "footnotes": [
            {
             ...
             }
          ]
        }
      ]
    }
  ]
}

我只想将y轴数据替换为“年”和“期间”,并将值替换为“值”。我的问题是,我不知道如何以一种好的格式获取这些数据,例如。

您需要使用以下任意一种来解析JSON:

JSON.parse(//JSON string)

一旦有了JSON对象,就只需编写一个函数来获取所需的数据

获得数据后,您可以调用:

myChartObject.series[0].setData(//parsed Data, true);
如果您希望不断更新数据,那么您需要编写一个函数来执行ajax调用,以获取数据并使用超时时间设置数据

范例

//When you create your Chart object, set the events object
myChart = new HighCharts.Chart({
    chart: {
        ...
        events: {
            load: requestData //function
        },
        ...
    }
});

function requestData() {
    $.ajax({
        url: dataSource,
        cache: false,
    }).done(function (data) {
       // parse JSON
       // set data
    }).always(function () {
        setTimeout(requestData, 6000);
    });
}
函数解析数据(json){
series=json.Results[0].series[0];
var newData=[],m,d;
对于(变量i=0;i
这将循环通过JSON并拉出periodName(忽略字母“M”)以获得月数和年份。它将把它们组合成一个日期(变量
d
),然后将此日期及其相关值推送到函数返回的
newData
数组中

要使用它,只需调用
seriesData=parseData(rawJSON)
,其中
rawJSON
是您指向此处的源数据文件的内容:

然后只需在HighCharts设置中使用
系列数据

$.parseJSON(//JSON string)
myChartObject.series[0].setData(//parsed Data, true);
//When you create your Chart object, set the events object
myChart = new HighCharts.Chart({
    chart: {
        ...
        events: {
            load: requestData //function
        },
        ...
    }
});

function requestData() {
    $.ajax({
        url: dataSource,
        cache: false,
    }).done(function (data) {
       // parse JSON
       // set data
    }).always(function () {
        setTimeout(requestData, 6000);
    });
}
function parseData(json) {
    series = json.Results[0].series[0];
    var newData = [], m, d;
    for (var i=0; i < series.length; i++) {
        m = series[i].periodName.substr(1); // strip out the letter "M" from the periodName
        d = new Date(series[i].year, m, 1);
        newData.push({d, series[i].value);
    }
     return newData;
}