2013-01-06 37 views
-1

我已经看了很多例子。然而,我仍然坚持这一点。我如何解析这个JSON响应以与我的Highstock Highchart一起工作?JSON解析为Highcharts

[{"averageprice":"18.7","date":"2000-01-01"},{"averageprice":"41.73","date":"2000-01-02"},{"averageprice":"34.27","date":"2000-01-03"},{"averageprice":"30.06","date":"2000-01-04"}] 

这里是我的图表到目前为止...

$.getJSON('http://example.com/dailyaverages.json', function(data) { 
    // Create the chart 
    window.chart = new Highcharts.StockChart({ 
     chart : { 
      renderTo : 'ppcontent' 
     }, 

     rangeSelector : { 
      selected : 0 
     }, 

     title : { 
      text : 'Trade Prices' 
     }, 

     xAxis: { 
      type: 'datetime' 
     }, 
     series : [{ 
      data : data 
     }] 
    }); 
}); 
+0

大多数现代浏览器都支持'JSON.parse()'方法,它的名字的确如此。 – 2013-01-06 05:29:14

回答

0

轴和数据的预期阵列。请尝试:

$.getJSON('http://example.com/dailyaverages.json', function(data) { 
    // Create the chart 
    var dataObj = JSON.parse(data); 
    window.chart = new Highcharts.StockChart({ 
     chart : { 
      renderTo : 'ppcontent' 
     }, 

     rangeSelector : { 
      selected : 0 
     }, 

     title : { 
      text : 'Trade Prices' 
     }, 

     xAxis: { 
      type: 'datetime' 
     }, 
     series : [{ 
      name: "Trade Prices", 
      data : function() { 
        var dataArr = []; 
        dataObj.forEach(function(d) { 
        dataArr.push(parseInt(d.averageprice, 10)); 
        }); 
        return dataArr; 
       }() 
     }] 
    }); 
}); 
+0

谢谢Munish。这看起来很接近,但它返回了错误。 “未捕获的SyntaxError:意外的令牌o”。我的控制台指向这一行:var dataObj = JSON.parse(data); – ac360

+0

我认为getJSON函数的第二个参数是要发送到服务器的数据。如果没有东西要发送,那么你可以传递null。所以,你的第一行看起来像这样:'$ .getJSON('http://example.com/dailyaverages.json',null,function(data){' –

0

以下是我的工作。必须将日期转换为UNIX格式:

function addPriceChart(chartcontainerID, chartTitle, dataURL) { 
      $.getJSON(dataURL, function (jsonresult) { 

      window.chart = new Highcharts.StockChart({ 
       chart: { 
       renderTo: chartcontainerID 
       }, 

       rangeSelector: { 
       selected: 1 
       }, 

       title: { 
       text: chartTitle 
       }, 

       credits: { 
       enabled: false 
       }, 

       series: [{ 
       name: 'Price1', 
       data: function() { 
        var dataArr = []; 
        jsonresult.forEach(function (row) { 
        var dateParts = row.date.split('-'); 
        var date = new Date(dateParts[0], (dateParts[1] - 1), dateParts[2]); 
        var data = [date.getTime(), parseFloat(row.averageprice)]; 
        dataArr.push(data); 
        }); 
        return dataArr; 
       }(), 
       tooltip: { 
        valueDecimals: 2 
       } 
       }] 
      }); 
      }); 
    } // END addPriceChart Function 


    addPriceChart('ppcontent', 'Prices, 'http://mysite.com/data.json');