angularjs - Strogi tip podataka za JSON datoteku


Kad dobijem podatke iz json-a, prvo kreiram klasu i definiram sve varijable koje dobijem u json-u za strogi tip podataka kao što je moja json datoteka

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

dakle, u Angularu klase napravim ovako

export class user{

 fname: string;
 lname : string;
}

Zbunjen sam kako napraviti klasu za sljedeće JSON podatke

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

Pokušao sam dodati niz u klasu, ali ne mogu shvatiti koji bi bio najbolji način da se to obradi u AngularJS-u.

Odgovor #1

Tipično biste koristili sučelje za predstavljanje strukture podataka primitivnih vrijednosti, na primjer:

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

Ovisno o tome kako dobijete JSON i parsirate ga, možete odrediti koju sučelje koristiti. Najjednostavniji primjer bi bio:

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

Ako želite koristiti klasu možda za povezane metode za manipulaciju podacima, morate instancirati klasu pomoću konstruktora. To bi moglo izgledati ovako:

const userValues = JSON.parse(userJson);
const user = new User(userValues);

Odgovor #2

Ovo bi funkcioniralo.

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[];
}