Как преобразовать массив JSON из REST API в объект

От моего бэкэнда я получаю такое сообщение:

[
    [
        {
            "id": 1,
            "date": "2018-12-31"
        },
        {
            "id": 12,
            "standard": null,
            "capacity": 7,
            "description": null,
        }
    ],
    [
        {
            "id": 26,
            "date": "2018-12-08"
        },
        {
            "id": 11,
            "standard": null,
            "capacity": 7,
            "description": null,
        }
    ]
]

Я хочу сопоставить этот ответ со списком из двух объектов, поэтому я создал класс:

export class Response {

  id: string;
  date: string;
  standard: string;
  capacity: number;
  description: string;
}

В моем методе, где я вызываю службу, я пробовал разные методы, и даже backendData.forEach не работает - Angular не распознает backendData как массив.

getData(){
    this.service.getData().subscribe(backendData=>{
      //how to convert  backendData to an array of Response[]?
    })
  }

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

Преобразование данных иногда может быть очень болезненным. Я использую эту библиотеку на основе декоратора (типстек / класс-трансформер) для преобразований. У авторов также есть валидационная библиотека. Настоятельно рекомендуется.

Harun Yilmaz 30.12.2018 18:08

Хорошо, такой быстрый вопрос, как выглядит backendData? Я имею в виду, что ответ выглядит как массив, содержащий массив объектов?

JO3-W3B-D3V 30.12.2018 18:13

Каким должен быть результат?

Jack Bashford 30.12.2018 18:16

Вы должны зарегистрировать backendData и проверить, что вы получаете, я думаю, что это объект ответа, поэтому вы получите массив из тела ответа, такого как backendData.body, и вам также нужно его проанализировать, поэтому сначала зарегистрируйте его

Abhay Sehgal 30.12.2018 18:21
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
548
1

Ответы 1

Может это поможет

getData(){
    this.service.getData().subscribe(backendData=> {
        //how to convert  backendData to an array of Response[]?
        return backendData.map(array => Object.assign(array[0], array[1]))
    })
}

Я не уверен, что вы действительно можете преобразовать этот массив в тип ответа, потому что ваш id является строкой, но в ответ вы получили номер, также вы получили в ответ обнуляемые description и standard

Другие вопросы по теме