Как мне получить доступ к данным во вложенном json списках? - PullRequest
0 голосов
/ 06 августа 2020

Это была настоящая боль для меня, и я не могу ее решить. У меня есть Json, который выглядит так:

"name": "The data",
"list": [
    {
        "item": "a613424",
        "locations": [
            {
                "name": "start",
                "a": 5.743,
                "b": 0.093
            }
        ]
    },
    {
        "item": "e88934",
        "locations": [
            {
                "name": "start",
                "a": 6.64,
                "b": 0.43
            }
        ]
    },
    {
        "item": "d92213",
        "locations": [
            {
                "name": "start",
                "a": 12.33,
                "b": 0.91
            },
            {
                "name": "stop",
                "a": 889,
                "b": 1.134
            }
        ]
    }]}

Каждый элемент имеет код элемента, а в местах - имя и значения для a и b. Некоторые предметы имеют 2 названия. Мне нужно прочитать это и извлечь код элемента, имя (я) и значения a и b. Я не знаю, сколько элементов будет в json или какие элементы будут иметь несколько имен.

Я либо получаю возвращенный объект, либо «неизвестно»

x = test_data.list[0]; document.write(x);

выходы [ object object]

document.write(test_data[0]);

выводит 'undefined'

Я мог бы сделать это за 5 минут в Python, но, к сожалению, это должно быть в javascript.

Спасибо

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

let objectData = {
  name: "The data",
  list: [
    {
      item: "a613424",
      locations: [
        {
          name: "start",
          a: 5.743,
          b: 0.093
        }
      ]
    },
    {
      item: "e88934",
      locations: [
        {
          name: "start",
          a: 6.64,
          b: 0.43
        }
      ]
    },
    {
      item: "d92213",
      locations: [
        {
          name: "start",
          a: 12.33,
          b: 0.91
        },
        {
          name: "stop",
          a: 889,
          b: 1.134
        }
      ]
    }
  ]
};

let obDList = objectData.list.map((x) =>
  x.locations.map((y) => {
    return `a = ${y.a}, b = ${y.b} `;
  })
);

console.log(obDList);
console.log(obDList[2][1]);
0 голосов
/ 06 августа 2020

Доступ к спискам через свойства forEach, item и locations. Это просто, поскольку у вас есть постоянная структура для вашего JSON

let data = {
  "name": "The data",
  "list": [{
      "item": "a613424",
      "locations": [{
        "name": "start",
        "a": 5.743,
        "b": 0.093
      }]
    },
    {
      "item": "e88934",
      "locations": [{
        "name": "start",
        "a": 6.64,
        "b": 0.43
      }]
    },
    {
      "item": "d92213",
      "locations": [{
          "name": "start",
          "a": 12.33,
          "b": 0.91
        },
        {
          "name": "stop",
          "a": 889,
          "b": 1.134
        }
      ]
    }
  ]
};

let listItems = data.list;
listItems.forEach(item => {
  console.log("item code: " + item.item); // item code
  item.locations.forEach(location => {
    console.log("location a is: " + location.a); // a
    console.log("location b is: " + location.b); // b
  });
  console.log("\n"); //for breakline
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...