Я получаю данные обратно с веб-сервера и пытаюсь получить доступ к данным внутри объекта JSON. У меня есть некоторые проблемы с доступом к нему.

JSON выглядит так:

{
     "faults": [
      {
        "FaultCodeType": "X",
        "ErrorType": "System",
        "Description": "Response failed for reason 1"
      },
      {
        "FaultCodeType": "Y",
        "ErrorType": "System",
        "Description": "Response failed for reason 2"
      }
     ],
     "responseInfo": {},
     "responseInfo2": {},
     "responseInfo3": {}
}

Должен ли я использовать JSON.parse?

JSON.stringify ?

У меня есть метод:

loadData(dataPassed) {
  this.angularService.searchWithData(dataPassed).subscribe(
data => {
const fault = data[0];
const fault2 = data[1];
console.log('Data is here = ' + data); // returns the JSON
console.log('Request = ' + JSON.stringify(data)); // shows the JSON
console.log(fault);  // undefined
console.log(fault2); // undefined
  }
}

Это не работает, хотя, любая помощь будет принята с благодарностью.

1
user3019183 14 Апр 2020 в 15:24

2 ответа

Лучший ответ

Вы получаете неопределенный из-за

const fault = data[0];
const fault2 = data[1];

Так как ваши данные не объект, а массив, ошибка [0] не существует

Пытаться

const fault = data.faults[0];
const fault2 = data.faults[1];
1
Shlok Nangia 14 Апр 2020 в 12:41

Чтобы получить доступ к faults:

const faults = data.faults;

Затем вы можете перебрать те faults:

faults.forEach(f -> {
     console.log('f.FaultCodeType', f.FaultCodeType);
     console.log('f.ErrorType', f.ErrorType);
     console.log('f.Description', f.Description);
})

Чтобы получить доступ к responseInfo, responseInfo2 или responseInfo3:

console.log('data.responseInfo', data.responseInfo);
console.log('data.responseInfo2', data.responseInfo2);
console.log('data.responseInfo3', data.responseInfo3);
0
Abdulrahman Hashem 14 Апр 2020 в 12:48