2014-11-14 117 views
1

我正在使用json將數據動態加載到Google Chart中,圖表看起來不錯,但我想要讀取json以便使用這些值來創建帶有json值的表格。從Google Charts中解析Json

我讀的數據:

var formData = {type:"All"}; 
var jsonDataAll = $.ajax({ 
    type: "POST", 
    data : formData,   
    url: "./content/chartsData.php", 
    dataType:"json", 
    async: false 
}).responseText; 

這是響應:

{ 
    "cols": [ 
     {"id":"","label":"Level","pattern":"","type":"string"}, 
     {"id":"","label":"Number","pattern":"","type":"number"} 
     ], 
     "rows": [ 
     {"c":[{"v":"Preschool","f":null},{"v":8,"f":null}]}, 
     {"c":[{"v":"Kindergarten","f":null},{"v":23,"f":null}]}, 
     {"c":[{"v":"Elementary","f":null},{"v":32,"f":null}]}, 
     {"c":[{"v":"Junior","f":null},{"v":31,"f":null}]}, 
     ] 
} 

如何獲得價值?

Preschool - 8 
Kindergarten - 23 
Elementary - 32 
Junior - 31 

任何想法?

+0

所有的答案的作品,問題是在數組中,我有一個逗號在最後一行的末尾。 'code' \t \t var obj = JSON.parse(jsonDataAll); \t \t var valuesAll = obj.rows; \t \t。每$(valuesAll,函數(指數,值){ \t \t \t的console.log(valuesAll [指數] .c的[0] .V + - + valuesAll [指數] .c的[1] .V); \t \t});'代碼' – JuanSedano 2014-11-14 18:27:38

回答

2

這是我在問題中的鏡頭。 http://jsfiddle.net/7uLk3ktn/

考慮到您有可用的JSON數據,下面是我用來提取數據的(jQuery)代碼。

<h1> School data </h1> 
<ul id="data"> 
</ul> 

var json_rows = json.rows; 
$.each(json_rows, function(index, value) { 
     console.log(json_rows[index].c[1].v); 
     var school_name = json_rows[index].c[0].v; 
     var school_value = json_rows[index].c[1].v; 
     $('ul#data').append('<li>'+ school_name + ' - ' + school_value + '</li>'); 
}); 
1

也許這樣的事情可能讓你開始:

var data = '["Level","Number"]'; 

for(var i=0; i < obj["rows"].length; i++){ 
    data += ",[" + obj["rows"][i]["c"][0]["v"] +","+ obj["rows"][i]["c"][1]["v"] + "]"; 
} 

然後數據變量可以被傳遞到您的圖表部分需要。 我製作this fiddle來搞亂格式化。

我肯定會建議查看Google Chart documentation

+0

非常感謝,這個作品呢! – JuanSedano 2014-11-14 18:45:36

1

你只需要到JSON解析到一個對象,然後通過存放在表示列和行數據重複,以獲得你需要的數據。這可能看起來像這樣:

var obj = JSON.parse(jsonDataAll); 
// get column labels 
var columns = []; 
for(i=0; i<=obj.cols.length; i++) { 
    columns .push(obj.cols[i].label); 
} 
console.log(columns); // ['Level','Number'] 
// get row data 
var rows = []; 
for(i=0; i<=obj.rows.length; i++) { 
    var row = []; 
    for(j=0;j<=labels.length;j++) { 
     row.push(obj.rows[i].c[j].v); 
    } 
    rows.push(row); 
} 
console.log(rows); // [['Preschool',8],['Kindergarten',23],['Elementary',32],['Junior',31]] 
+0

非常感謝,這個作品呢! – JuanSedano 2014-11-14 18:46:19