我正在使用d3.js' s" 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
我似乎错过了一些关于此的知识片段。指导?帮助
提前致谢。
答案 0 :(得分:2)
这是我实施的小提琴:https://jsfiddle.net/thatOneGuy/486mwb86/1/
首先,我将数据设置为变量,以便稍后使用。所以:
select a.name as 'Roll up',
b.name as 'Appeal Category',
C.NAME as 'Planned Appeal',
D.NAME as 'PME'
from GROUP_TABLE A
left outer JOIN GROUP_TABLE B ON A.MKTPLANID = B.MKTPLANID AND A.PARENTID = B.PMKID
left outer JOIN GROUP_TABLE C ON A.MKTPLANID = C.MKTPLANID AND B.PARENTID = C.PMKID
left outer JOIN GROUP_TABLE D ON A.MKTPLANID = D.MKTPLANID AND C.PARENTID = D.PMKID
where a. caption = 'Roll up'
这与您使用的完全相同:
var data = {
"offset": 0,
"rows": [{
"_id": {
"$oid": "1234567"
}, ... //and so on
两个数据变量都相同。
然后我到了你要检查的地步,即数据属性中的类别,如下所示:
d3.json('http://url_that_returns_json/', function(error,data{
由于这是一个数组而不是一个对象,我使用for循环来遍历:
var thisDataSet = data.rows[0].mockupData[0].Data;
而且,在我看来,你不需要一个switch语句,因为看起来你只想用不同的类别填充for (var i = 0; i < thisDataSet.length; i++) {
。所以我只是将数据集中类别的当前值推送到此Category.values
:
Category.values
就是这样。检查控制台日志以获取输出。应该工作正常。全功能:
Category[0]["values"].push({
"label": "Statistic",
"value": thisDataSet[i].Category //push category here
});