JSON объект из Angular http не десериализован должным образом - PullRequest
0 голосов
/ 17 марта 2020

Сначала вот мои рабочие версии: node v12.13.1 | npm 6.12.1

У меня возникли проблемы с пониманием того, почему это не десериализовано должным образом. Я получаю следующее от моей службы отдыха.

{ "numbers":[],
  "batches":[ 
    { "id":"AB3E809","status":"1"},
    { "id":"EEF32A9","status":"0"}] }

Это интерфейсы TypeScript, которые я использую при попытке ввести данные.

interface NumJson {
  status: string,
  num: string
}

interface BatchJson {
  id: string,
  status: string
}

interface Status {
  numbers: NumJson[],
  batches: BatchJson[];
}

При выполнении этих вызовов из моего Angular служба, похоже, она не распознает и не обращается к данным должным образом.

this.http.get<any>(url).subscribe({
  next: (data: Status) => {
    console.log(data);              // same as JSON above
    console.log(data.numbers);      // undefined
    console.log(data.batches);      // undefined
}

this.http.get<any>(url).subscribe({
  next: (data: any) => {
    console.log(data);              // same as JSON above
    console.log(data.numbers);      // undefined
    console.log(data.batches);      // undefined
}

Любое понимание этого было бы замечательно, поскольку это единственная подписка, которая имеет проблемы.

1 Ответ

0 голосов
/ 17 марта 2020

Я разобрался в проблеме после некоторых провокационных мыслей из «Курта Гамильтона». Моя проблема была в том, как служба отдыха возвращала мои данные.

Правильно отформатированные данные должны выглядеть в консоли следующим образом:

Expected Output

В моих выходных данных отображались строки; это заставило меня задуматься, почему мои данные были строкой, а не объектом в консоли. (хорошее замечание, чтобы убрать эту проблему)

После проверки службы отдыха я понял, что она выполняет двойную сериализацию. Как только я исправил это, вывод данных выглядел и действовал правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...