2013-04-02 2 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" 
} 

мне нужно, чтобы захватить данные только для трех ключевых в/идентификаторами (12426597,878198, 6447271) и сделать одну гистограмму для каждого из них (, требующих data transformation < == см) , Затем мне нужно подключить его к Highcharts ... их API, вызывающий упорядоченные массивы для ключей и значений.

Я думал о первом делает массив идентификаторов:

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', 'Т'] данные: [3, 9] // С = 3, Т = 9

+0

Если вы не нажимаете фактическое значение вместо имени свойства 'snpList.push (snpsObj [prop]);'? – Quantastical

ответ

2

Я думаю, что вы хотите получить доступ к

snpsObj[ snpList[0] ] 

с помощью bracket notation, snpsObj.snpList[0] попытается получить «snpList» свойство вашего snpsObj объекта.

Btw вместо вашего for-in-loop для создания массива с именами свойств, вы можете использовать Object.keys (даже если вам нужно проложить его для поддержки старых браузеров).

Смежные вопросы