Как отобразить класс модели с ответом API Angular 5 - PullRequest
0 голосов
/ 10 октября 2018

У меня есть ответ API:

{
 "response_type": 1,
 "msg": "",
 "success": true,
 "status": 200,
 "data": {
   "first_name": "Divyashree M",
   "user_id": 258031,
   "svc_id": 2,
   "svc_name": "21North India",
   "address": {
    "country": "india",
    "street_name": "queens road",
    "locality": "not defined",
    "door_number": "0",
    "zipcode": "pipoi--"},
   "logo_url": "url",
   "permission_type_id": 1,
   "is_admin": 0,
   "company_type": 1,
   "designation_id": 1,
   "term_status": 0
 }
}

интерфейс, который я создал:

interface RootObject {
  response_type: number;
  msg: string;
  success: boolean;
  status: number;
  data: Data;
}

interface Data {
  first_name: string;
  user_id: number;
  svc_id: number;
  svc_name: string;
  address: Address;
  logo_url: string;
  permission_type_id: number;
  is_admin: number;
  company_type: number;
  designation_id: number;
  term_status: number;
}

interface Address {
  country: string;
  street_name: string;
  locality: string;
  door_number: string;
  zipcode: string;
}

Может кто-нибудь сказать мне, как сопоставить JSON с классом модели, а также как проверить,правильный тип данных приходит из API или не со всеми свойствами класса.Я пытался использовать функцию карты из Rxjs, но я застрял. Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 10 октября 2018

Нам нужно знать немного больше, чтобы помочь вам.Как вы называете свой API?Это наблюдаемое?

Я вижу, что ответ API и интерфейс имеют одинаковую структуру.Попробуйте добавить конструктор к каждой модели, например:

    export class RootObject {

      constructor(obj: any) {
         _.assignin(this, obj);
      }

      response_type: number;
      msg: string;
      success: boolean;
      status: number;
      data: Data;
    }

    export class Data {

      constructor(obj: any) {
         _.assignin(this, obj);
      }

      first_name: string;
      user_id: number;
      svc_id: number;
      svc_name: string;
      address: Address;
      logo_url: string;
      permission_type_id: number;
      is_admin: number;
      company_type: number;
      designation_id: number;
      term_status: number;
    }

export class Address {

      constructor(obj: any) {
         _.assignin(this, obj);
      }

      country: string;
      street_name: string;
      locality: string;
      door_number: string;
      zipcode: string;
    }

Если вы получаете ответ API через HTTP, это должно быть что-то вроде этого:

let rootObject: RootObject;
this.http.get(url, options).subscribe(data => rootObject = new RootObject(data));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...