2016-10-01 3 views
0

Я пытаюсь перебрать значения json второго уровня в ответе.Как получить значение Json второго уровня

Это образец Json:

{ 

    "Links": {}, 

"Items": [ 

    { 

    "WebId": "A0EUfSms148rEStZ8_fh", 

    "Name": "AA to Slurry ", 

    "Path": "klj", 

    "Links": { 

    "Source": "" 

    }, 

    "Items": [ 

    { 

     "Timestamp": "2016-08-21T05:14:27.0180053Z", 

     "Value": 0.0154830571, 

     "UnitsAbbreviation": "%", 

     "Good": true, 

     "Questionable": false, 

     "Substituted": false 

    }, 

    { 

     "Timestamp": "2016-08-21T05:14:30Z", 

     "Value": 0.0155982981, 

     "UnitsAbbreviation": "%", 

     "Good": true, 

     "Questionable": false, 

     "Substituted": false 

    }, 

    { 

     "Timestamp": "2016-08-21T05:14:30Z", 

     "Value": 0.0155982981, 

     "UnitsAbbreviation": "%", 

     "Good": true, 

     "Questionable": false, 

     "Substituted": false 

    }, 

    { 

     "Timestamp": "2016-08-21T05:14:33.024002Z", 

     "Value": 0.0155704552, 

     "UnitsAbbreviation": "%", 


    "Items": [ 

{ 

    "WebId": "A0EUfSms148rEStZ8_fh", 

    "Name": “Slurry ", 

    "Path": "klj", 

    "Links": { 

    "Source": "" 

    }, 

    "Items": [ 

    { 

     "Timestamp": "2016-08-21T05:14:27.0180053Z", 

     "Value": 0.0154830571, 

     "UnitsAbbreviation": "%", 

     "Good": true, 

     "Questionable": false, 

     "Substituted": false 

    }, 

    { 

     "Timestamp": "2016-08-21T05:14:30Z", 

     "Value": 0.0155982981, 

     "UnitsAbbreviation": "%", 

     "Good": true, 

     "Questionable": false, 

     "Substituted": false 

    }, 

    { 

     "Timestamp": "2016-08-21T05:14:30Z", 

     "Value": 0.0155982981, 

     "UnitsAbbreviation": "%", 

     "Good": true, 

     "Questionable": false, 

     "Substituted": false 

    }, 

    { 

     "Timestamp": "2016-08-21T05:14:33.024002Z", 

     "Value": 0.0155704552, 

     "UnitsAbbreviation": "%", 

Это код, который я до сих пор, что возвращает только имя:

var feat = resp.Items, 
     tableData = []; 

    // Iterate over the JSON object 
    for (var i = 0, len = feat.length; i < len; i++) { 
     tableData.push({ 
      "name": feat[i].Name, 
      "Timestamp": feat[i].Timestamp, 
      "value": feat[i].Items.Value, 

     }); 
    } 

Таким образом, в этом примере, этот пример tabledata бы идеально выглядеть например:

name  | Timestamp | value 
AA to Slurry 
AA to Slurry 
AA to Slurry 
AA to Slurry 
AA to Slurry 
AA to Slurry 
Slurry 
Slurry 
Slurry 
Slurry 
Slurry 
Slurry 

С соответствующей меткой времени и значением со второго уровня «I стем». Прямо сейчас все, что я получаю, это значение имени, как получить имя, затем перебрать элементы второго уровня?

+1

У вас есть JSON, или у вас есть объект? – adeneo

+0

@adeneo У меня есть JSON. – llerdal

+0

@llerdal Нам нужно точно знать, что у вас есть значение 'resp'. Как вы получили JSON в объект JS и проанализировали его? Какой adeneo говорит, что вы, вероятно, используете объект в JavaScript, а не JSON, который является текстовым файлом, который вам нужно будет анализировать на JavaScript. –

ответ

3

Я думаю, что ваша проблема заключается в том, что к вашему массиву подтипов обращаются напрямую. (feat[i].Items.Value), вместо этого вы должны пройти через второй массив. Я собрал этот код, чтобы вы начали, он перебирает элементы в json, которые вы затем прокручиваете элементы внутри каждого элемента первого массива.

json.Items.forEach(function(item){ 
    item.Items.forEach(function(subItem){ 
    tableData.push({ 
     'name':item.Name, 
     'timestamp':item.TimeStamp, 
     'value':subItem.Value 
    }); 
    }); 
});