2014-04-09 35 views
0

我使用php將json傳遞給Highcharts。我的PHP是返回JSON看起來像這樣:高級和動態json

{"A":5,"B":12,"C":5,"D":11,"E":6} 

我怎麼會去建立一個圖表與類:A,B,C,d,E和值:5,12,5,11, 6?

我已經嘗試使用:

$.getJSON("test.php", function(json){ 
      $.each(json, function(i, e) { 
      options.series.data= json; 
       }); 
      chart = new Highcharts.Chart(options); 

      }); 

我知道這只是把所有的JSON,並試圖dump出這是不對的series.data。分離鍵和值的最好方法是什麼?這應該在PHP端或JavaScript處理?

感謝

回答

2

我已經爲你創建一個類,這樣你就可以在任何地方使用它:

HighChartObject = function (obj) { 
    if (typeof obj === 'string') obj = JSON.parse(obj); 

    for (var key in obj) { 
     this[key] = obj[key]; 
    } 
} 

HighChartObject.prototype.getDataArray = function() { 
    var arr = []; 

    for (var key in this) { 
     if (this.hasOwnProperty(key)) { 
      arr.push(obj[key]); 
     } 
    } 

    return arr; 
} 

HighChartObject.prototype.getCategoriesArray = function() { 
    var arr = []; 

    for (var key in this) { 
     if (this.hasOwnProperty(key)) { 
      arr.push(key); 
     } 
    } 

    return arr; 
} 

用法:

var json = '{ "A": 5, "B": 12, "C": 5, "D": 11, "E": 6 }'; 
var obj = new HighChartObject(json); 

$("#container").highcharts({ 
    xAxis: { 
     categories: obj.getCategoriesArray() 
    }, 
    series: [ 
     { 
      name: "MyName", 
      data: obj.getDataArray() 
     } 
    ] 
}); 

而且here there is a FIDDLE,這樣你就可以玩用它!

我不知道這是否正是您所需要的,但我認爲您可以根據需要改進代碼,對嗎?

我希望它可以幫助你=)

+0

真的很好的一段代碼。我想它可以更快的工作,如果你只是簡單地遍歷所有的屬性,當初始化對象:) –