#javascript #jquery #json
#javascript #jquery #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,
});
}
Итак, в этом примере этот пример табличных данных в идеале выглядел бы так:
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
С соответствующей меткой времени и значением из «Элементов» второго уровня. Прямо сейчас все, что я получаю, это значение name как мне получить имя, а затем выполнить итерацию по элементам второго уровня?
Комментарии:
1. У вас есть JSON или у вас есть объект?
2. @adeneo У меня есть JSON.
3. @llerdal Нам нужно точно знать, что у вас есть значение
resp
. Как вы получили JSON в объект JS и проанализировали его? Аденео говорит, что вы, вероятно, используете объект в JavaScript, а не JSON, который представляет собой файл текстового формата, который вам нужно будет разобрать на JavaScript.4. Я получаю его, хотя $.getJSON(«websiteJSONCall «, функция (соответственно) { @SpencerWieczorek
Ответ №1:
Я думаю, ваша проблема в том, что к вашему массиву вложенных элементов осуществляется прямой доступ. ( feat[i].Items.Value
) вместо этого вы также должны перебирать 2-й массив. Я собрал этот код, чтобы вы начали, он перебирает элементы в json, которые у вас есть, затем перебирает элементы внутри каждого элемента первого массива.
json.Items.forEach(function(item){
item.Items.forEach(function(subItem){
tableData.push({
'name':item.Name,
'timestamp':item.TimeStamp,
'value':subItem.Value
});
});
});