Строгий тип данных для файла JSON - PullRequest
0 голосов
/ 01 октября 2018

Я новичок в angularjs.Когда я получаю данные из json, я сначала создаю класс и определяю все переменные, которые я получаю в json для строгого типа данных, например, мой файл json

 {"fname":"Mark","lname":"jhony"}

, поэтому в угловом классе я делаю класс следующим образом

export class user{

 fname: string;
 lname : string;
}

Я не совсем понимаю, как создать класс для следующих данных json

{"fname":"Mark","lname":"jhony",
 "parcels":[
   {
    "parcelId":123,
    "parcelName :"asd",
    "parcelItems:[
       { 
        "itemId":2,
        "itemName":"perfume"
       },
       { 
         "itemId":4,
         "itemName":"soap"
       }
     ]
]}

Я пытался добавить массив в класс, но не получил того, что было бы лучшим способом его обработать.в angularjs.

Ответы [ 2 ]

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

Это будет работать.

export interface ParcelItemType {    
    itemId: number;
    itemName: string;
}

export interface ParcelType {
    parcelId: number;
    parcelName: string;
    parcelItems: ParcelItemType[];
}

export interface YourType {
   fname: string;
   lname: string;
   parcels: ParcelType[];
}
0 голосов
/ 01 октября 2018

Обычно вы используете интерфейс для представления структуры данных примитивных значений, например:

interface ParcelItem {
  itemId: number;
  itemName: string;
}
interface Parcel {
  parcelId: number;
  parcelName: string;
  parcelItems: ParcelItem[];
}
interface User {
  fname: string;
  lname: string;
  Parcels: Parcel[];
}

В зависимости от того, как вы получаете JSON и анализируете его, вы можете указать используемый интерфейс.Самый упрощенный пример:

const user = JSON.parse(userJson) as User;

Если вы хотите использовать класс, возможно, для связанных методов манипулирования данными, вам нужно создать экземпляр класса с помощью конструктора.Это может выглядеть так:

const userValues = JSON.parse(userJson);
const user = new User(userValues);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...