angularjs - Strikt datatyp för json-fil
När jag får datan från json skapar jag först en klass och definierar alla variabler jag får i json för strikt datatyp som min json-fil är
{"fname":"Mark","lname":"jhony"}
så i Angular gör jag klassen på det här sättet
export class user{
fname: string;
lname : string;
}
Jag är förvirrad över hur man skapar klassen för följande JSON-data
{"fname":"Mark","lname":"jhony",
"parcels":[
{
"parcelId":123,
"parcelName :"asd",
"parcelItems:[
{
"itemId":2,
"itemName":"perfume"
},
{
"itemId":4,
"itemName":"soap"
}
]
]}
Jag försökte lägga till en array i klassen men förstår inte vad som skulle vara det bästa sättet att hantera det i AngularJS.
Svar #1
Vanligtvis skulle du använda ett gränssnitt för att representera en datastruktur av primitiva värden, till exempel:
interface ParcelItem {
itemId: number;
itemName: string;
}
interface Parcel {
parcelId: number;
parcelName: string;
parcelItems: ParcelItem[];
}
interface User {
fname: string;
lname: string;
Parcels: Parcel[];
}
Beroende på hur du skaffar JSON och tolkar det kan du ange vilken gränssnitt som ska användas. Det mest enkla exemplet skulle vara:
const user = JSON.parse(userJson) as User;
Om du vill använda en klass, kanske för associerade metoder för datamanipulering, måste du instansiera klassen med en konstruktor. Detta kan se ut så här:
const userValues = JSON.parse(userJson);
const user = new User(userValues);
Svar #2
Detta skulle fungera.
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[];
}
