web-dev-qa-db-fra.com

Angular 2 en analysant des objets JSON en angular classes

J'ai suivi la documentation de démarrage d'Angular2 pour lancer ma propre application. J'ai également réussi à extraire des objets JSON d'un fichier local et à les afficher dans des modèles angular2. Cependant, actuellement, il repose sur les classes angular qui correspondent exactement à la structure des objets de mon fichier JSON.

Finalement, j'aurai besoin que mon application fonctionne avec JSON-LD, qui porte des noms de propriété tels que "@id". J'ai fait quelques recherches sur Google et il semble que RxJS ait les fonctionnalités que je recherche, mais je ne sais pas par où commencer pour interrompre la liaison automatique de certaines données JSON directement dans mes classes angular2, et pouvoir plutôt regarder. en place quelque chose qui est étiqueté comme "@ id" dans le JSON et définir la valeur de SomeClass.id

Code actuel qui produit automatiquement un tableau d'une classe Person:

getPeople(){
    return this._http.get(this._peopleUrl)
        .map(response => <Person[]> response.json().data)
        .do(data => console.log(data)) //debug to console
        .catch(this.handleError);
} 

Parfait pour JSON comme ceci:

[
 {
  "id":"1",
  "name":"tessa"
 },
 {
  "id":"2",
  "name":"jacob"
 }
]

Mais cela échouerait évidemment pour JSON comme ceci:

[
 {
  "@id":"1",
  "name":"tessa"
 },
 {
  "@id":"2",
  "name":"jacob"
 }
]

Mon cours est simple (pour le moment :-))

export class Person {
  constructor(
    public id:number,
    public name:string,
  ){}
}

Quelqu'un peut-il m'indiquer la bonne direction pour certains documents/exemples de mappage de json complexe/compliqué avec les classes de angular2?

25
zanther

J'ai trouvé la réponse dans l'option 4 de la réponse donnée ici: Comment initialiser un objet TypeScript avec un objet JSON

J'espère que cela aidera si quelqu'un atterrit sur cette page à la recherche de la même chose!

11
zanther