angularjs - Type de données strict pour fichier json
Lorsque je récupère les données du json, je crée d'abord une classe et je définis toutes les variables que je reçois dans le json pour un type de données strict comme mon fichier json est
{"fname":"Mark","lname":"jhony"}
Donc en Angular, je crée la classe comme ceci
export class user{
fname: string;
lname : string;
}
Je suis confus sur la façon de créer la classe pour les données JSON suivantes
{"fname":"Mark","lname":"jhony",
"parcels":[
{
"parcelId":123,
"parcelName :"asd",
"parcelItems:[
{
"itemId":2,
"itemName":"perfume"
},
{
"itemId":4,
"itemName":"soap"
}
]
]}
J'ai essayé d'ajouter un tableau dans la classe mais je ne sais pas quelle serait la meilleure façon de le gérer dans AngularJS.
Réponse #1
En général, vous utiliseriez une interface pour représenter une structure de données de valeurs primitives, par exemple :
interface ParcelItem {
itemId: number;
itemName: string;
}
interface Parcel {
parcelId: number;
parcelName: string;
parcelItems: ParcelItem[];
}
interface User {
fname: string;
lname: string;
Parcels: Parcel[];
}
Selon la façon dont vous obtenez le JSON et le parsez, vous pouvez spécifier l'interface à utiliser. L'exemple le plus simple serait :
const user = JSON.parse(userJson) as User;
Si vous voulez utiliser une classe, peut-être pour des méthodes associées à la manipulation de données, vous devez instancier la classe en utilisant un constructeur. Cela pourrait ressembler à :
const userValues = JSON.parse(userJson);
const user = new User(userValues);
Réponse #2
Cela fonctionnerait.
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[];
}
