我正在使用 d3.js 的“d3.json(); 函数来访问并从 REST API 获取一些数据。
返回的数据如下:
{
"offset" : 0,
"rows": [
{ "_id":
{ "$oid" : "1234567" },
"mockupData" : [ {
"Analysis" : "Test",
"Description" : "The Test indicates...",
"Data" : [
{ "Category" : "A",
"Statistic" : 0.15,
"Value" : 0.95 },
{ "Category" : "B",
"Statistic" : 0.65,
"Value" : 0.85 },
] } ] }
],
"total_rows" : 1 ,
"query" : {} ,
"millis" : 0
}
我很难深入到 json 中以获得我想要的东西。
我正在尝试这样设置:
function generateChart(){
var chart;
var Category = [{key:"Stuff", values:[]}];
d3.json('http://url_that_returns_json/', function(error,data{
for(var key in data._SOMETHING_){
switch(key){
case "A":
Category[0] ["values"].push({"label":"Statistic","value""data.Category[key]});
... // same for B
})
// more graph logic
我似乎缺少这方面的一些完整知识。指导?帮忙?
提前致谢。
最佳答案
这是我实现的 fiddle :https://jsfiddle.net/thatOneGuy/486mwb86/1/
首先,我将数据设置为变量,以便稍后使用。所以:
var data = {
"offset": 0,
"rows": [{
"_id": {
"$oid": "1234567"
}, ... //and so on
这与您使用的完全相同:
d3.json('http://url_that_returns_json/', function(error,data{
两个数据变量相同。
然后我到达了您想要检查的点,即数据属性中的类别,如下所示:
var thisDataSet = data.rows[0].mockupData[0].Data;
由于这是一个数组而不是对象,因此我使用了 for 循环来循环:
for (var i = 0; i < thisDataSet.length; i++) {
而且,在我看来,您不需要 switch 语句,因为看起来您只是想用不同的类别填充 Category.values
。因此,我只是将数据集中类别的当前值推送到此 Category.values
:
Category[0]["values"].push({
"label": "Statistic",
"value": thisDataSet[i].Category //push category here
});
就是这样。检查控制台日志的输出。应该可以正常工作。完整功能:
function generateChart() {
var chart;
var Category = [{
key: "Stuff",
values: []
}];
console.log(data.rows[0].mockupData[0].Data)
var thisDataSet = data.rows[0].mockupData[0].Data;
for (var i = 0; i < thisDataSet.length; i++) {
//for (var key in data.rows[0].mockupData[0].Data) {
console.log(thisDataSet[i])
Category[0]["values"].push({
"label": "Statistic",
"value": thisDataSet[i].Category
});
}
console.log(Category)
}
关于javascript - 如何在此 JSON 文件中引用此数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36894128/