如何在此JSON文件中引用此数据?

时间:2016-04-27 15:22:04

标签: javascript json d3.js

我正在使用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

我似乎错过了一些关于此的知识片段。指导?帮助

提前致谢。

1 个答案:

答案 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
    });