将一个JSON返回分成几个对象

时间:2013-04-02 05:39:36

标签: javascript json object highcharts

所以,我一直在关注这个问题几个小时,而且我没有想法。我的应用程序返回一个JSON对象,我需要解析它的4个数据集,并制作3个图表和一个表。对于我的生活,我无法弄清楚如何“提取”每个部分。 JSON看起来像:

{
   "allele":{
      "12426597":{
         "??":4,
         "CC":3,
         "TT":4,
         "CT":12
      },
      "878198":{
         "??":4,
         "AA":1,
         "AC":15,
         "CC":3
      },
      "6447271":{
         "??":4,
         "GG":14,
         "AG":5
      }
   },
   "haplo":{
      "CT,AG,AC":3,
      "TT,GG,AC":1,
      "CC,GG,CC":1,
      "TT,AG,CC":1,
      "TT,GG,CC":1
   },
   "exercise":"p1"
}

我需要为三个密钥/ ID(12426597,878198,6447271)获取数据并为每个密钥创建一个条形图(需要data transformation< == see)。然后我需要将它插入Highcharts ...他们的API调用键和值的有序数组。

我想过要先制作一个ID数组:

var snpsObj = data.allele_frequency; // data returned from $.getJSON
var snpList = [];

for (prop in snpsObj) {
    if (!snpsObj.hasOwnProperty(prop)) {
        continue;
    }
    snpList.push(prop);
}

哪个能让我获得想要的数组。然后访问“sub”键,如:

snpsObj.snpList[0];

...希望能够回归,例如:

{
   "CC" : 23,
   "CT" : 36,
   "TT" : 12,
}

但这根本不起作用。我能得到的最多的回报是:

allele_frequency : [object Object ]

我知道有一些基本的东西,我只是忘记了头脑冷漠的思绪......有什么建议吗?

Highcharts需要以数组格式化的键和标签,例如:

类别:['C','T'] 数据:[3,9] // C = 3,T = 9

1 个答案:

答案 0 :(得分:2)

我想你想要访问

snpsObj[ snpList[0] ]

使用bracket notationsnpsObj.snpList[0]会尝试获取snpsObj对象的“snpList”属性

顺便说一句,您可能希望使用Object.keys(即使您需要将其填充以支持旧版浏览器)而不是您的for-in-循环来创建具有属性名称的数组。