2013-04-02 14 views
0

所以,我一直在尋找這個幾個小時,並沒有想法。我的應用程序正在返回一個JSON對象,我需要解析出它的4個數據集並製作3個圖表和一個表格。對於我的生活,我無法弄清楚如何「提取」每個部分。 JSON的樣子:拆分一個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" 
} 

我需要獲取的數據只是爲三個主要的/ IDS(12426597,878198,6447271),並讓一個條形圖每個那些(需要data transformation < ==見) 。然後我需要將它插入到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); 
} 

這確實讓我想要的陣列。然後訪問「亞健康」鍵,如:

snpsObj.snpList[0]; 

...,希望能夠返回,類似:

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

但是,這並不在所有的工作。我能得到最是的像一回:

allele_frequency : [object Object ] 

我知道有一些基本的東西,我只是忘了在我的頭上,冷灰化的心靈......有什麼建議?

Highcharts需要在陣列格式的鍵和標記,如:

類:[ 'C', 'T'] 數據:[3,9] // C = 3,T = 9

+0

難道你不應該推動實際值而不是屬性名稱'snpList.push(snpsObj [prop]);'? – Quantastical

回答

2

我想你想使用bracket notationsnpsObj.snpList[0]將嘗試獲得「snpList」你snpsObj對象的財產訪問

snpsObj[ snpList[0] ] 

順便說一句,而不是你爲在迴路來創建屬性名稱的數組,你可能需要使用Object.keys(即使你需要墊片它支持舊的瀏覽器)。