typescript - Angular 2 analyserer JSON-objekter til Angular-klasser


Jeg har fulgt Angular2s startdokumentasjon for å få min egen app i gang, og jeg har klart å hente JSON-objekter fra en lokal fil og vise dem i Angular2-maler. Imidlertid avhenger det for øyeblikket av at Angular-klassene samsvarer nøyaktig med strukturen til objektene i JSON-filen min.

Til slutt vil jeg trenge at appen min fungerer med JSON-LD, som har egenskapsnavn som "@id". Jeg har søkt litt på Google, og det ser ut til at RxJS kan ha funksjonaliteten jeg leter etter, men jeg er ikke sikker på hvor jeg skal begynne for å avbryte den automatiske bindingen fra noen JSON-data direkte inn i Angular2-klassene mine, og i stedet kunne slå opp noe som er merket som "@id" i JSON-en og sette verdien til SomeClass.id

Gjeldende kode som automatisk produserer et array av en Person-klasse:

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

Fint for JSON som dette:

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

Men det ville åpenbart feile for JSON som dette:

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

Klassen min er enkel (for øyeblikket :-) )

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

Kan noen peke meg i riktig retning for dokumentasjon/eksempler på hvordan man mapper kompleks/vanskelig JSON til klassene i Angular2?

Svar #1

Jeg fant svaret i alternativ 4 av svaret gitt her: Hvordan initialiserer jeg et TypeScript-objekt med et JSON-objekt

Håper dette hjelper hvis noen havner på denne siden på jakt etter det samme!

Relaterte artikler