Отображение JSON ответа от веб-сервиса в Angular класс, когда в JSON поле есть место Имена - PullRequest
0 голосов
/ 30 марта 2020

У меня есть JSON структура, подобная этой

Data:[{'Project Name':'P1',PCode:1},{'Project Name':'P2',PCode:2},{'Project Name':'P1',PCode:3}]

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

projects:project[]=[];
this.apiService.getTest().subscribe((data: any) => {
this.projects= data.Data;

 });

 export class project{
    projectCode:string;
    projectName:string;
}

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Используйте Array.prototype.map для этого сценария. Пожалуйста, попробуйте вот так

this.apiService.getTest().subscribe((data: any) => {
      this.projects =  data.Data.map(item => {
         return {
              projectName: item['Project Name'],
              projectCode: item.PCode 
         }
      })

     });
1 голос
/ 30 марта 2020

Вы можете использовать карту:

import {map} from 'rxjs/operators';

this.apiService.getTest().pipe(
  map((data: any) => {
    data.Data = data.Data.map((item: any) => ({
        projectName: item['Project Name'],
        projectCode: item.PCode
      });
    return data;
  })
).subscribe((data: any) => this.projects= data.Data);

В случае, если вы используете rx js

import { map } from 'rxjs/operator/map';

this.apiService.getTest()
  .map((data: any) => {
    data.Data = data.Data.map((item: any) => ({
        projectName: item['Project Name'],
        projectCode: item.PCode
      });
    return data;
  }).subscribe((data: any) => this.projects= data.Data);

Вы также можете найти какой-нибудь картограф в Google, но я думаю, что проще вручную сопоставить вещи, как я делал выше.

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