2010-07-16 95 views
1

我有以下脚本,我需要修改一点。这里是JSON:谷歌图表格式

[ 
    {"User1":{"v": 50.00,"f": "£100"}}, 
    {"User2":{"v": 10.00,"f": "£20"}}, 
    {"User3":{"v": 10.00,"f": "£20"}}, 
    {"User4":{"v": 10.00,"f": "£20"}}, 
    {"User5":{"v": 20.00,"f": "£40"}} 
] 

和这里的脚本:

<html> 
<head> 
<script language="javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script> 
<script type="text/javascript" src="http://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
    google.load("visualization", "1", {packages:["corechart"]}); 
    google.setOnLoadCallback(drawChartAjax); 

    function drawChartAjax() { 
     $.ajax({ 
      url: 'chart_json.aspx', 
      type: 'POST', 
      dataType: 'json', 
      success: function(data) { 
       drawChart(data); 
      } 
     }); 
    } 

    function drawChart(json) { 
     var data = new google.visualization.DataTable(); 
     data.addColumn('string', 'User'); 
     data.addColumn('number', 'v'); 
     data.addRows(json.length); 
     for(var j in json) { 
      for(var k in json[j]) { 
       data.setValue(parseInt(j), 0, k); 
       data.setValue(parseInt(j), 1, json[j][k].v); 
      } 
     } 
     var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 
     chart.draw(data, {width: 500, height: 300, is3D: true, title: 'Work In Progress'}); 
    } 
</script> 
</head> 
    <body> 
    <div id="chart_div"></div> 
    </body> 
</html> 

该作品以给我一个很好的饼图,如何从JSON获得“F”的值到图表太数据?

回答

1

添加一个f列:

data.addColumn('number', 'v'); 
data.addColumn('number', 'f'); // <- new line 

而且,添加数据到行:

for(var k in json[j]) { 
    data.setValue(parseInt(j), 0, k); 
    data.setValue(parseInt(j), 1, json[j][k].v); 
    data.setValue(parseInt(j), 2, parseInt(json[j][k].f.substring(1))); // <- new line 
} 

但是,我不知道一个饼图如何处理。

+0

我得到一个类型不匹配的错误。 – oshirowanen 2010-07-16 16:05:20

+0

啊 - 因为数据不是数字(因为磅符号)。您可以将其设置为数字(服务器端或客户端),也可以将列f的数据类型从“数字”更改为“字符串”。 – sje397 2010-07-16 16:20:05

+0

我更新了我的答案,以显示如何插入保持'数字'数据类型的数据。它只是剔除第一个字符(英镑符号),然后解析字符串为int。 – sje397 2010-07-16 16:27:34