javascript - TypeScript-klass till JSON


Jag har en klassarray där klassen ser ut så här:

class Tag{
    select: string;
    search: string;
}

Jag vill konvertera det till JSON där det förmodligen kommer att se ut som [{select: "blah", search: "bleh"}, {...}, {...}].

Är detta möjligt? För från Angular 2-handledningen kan du göra motsatsen med raden:

.map((r: Response) => r.json().data as Hero[]);

Svar #1

Du kan omvandla javascript-objekt till json-strängar med JSON.stringify() Eftersom klasser och instanser av klasser är objekt i javascript kan du också göra dem till strängar

Svar #2

Du kan lägga till en toJSON()-funktion i din klass. Denna funktion anropas automatiskt när JSON.stringify() anropas på ditt klassinstans

class Person{
  constructor(readonly name){}

  toJSON(){
    return {
      firstName: this.name
    }
  }
}

Nu, om du console.log din klassinstans med JSON.stringify, kommer du att se detta resultat

const person=new Person("Tom"); console.log(JSON.stringify(person));

Utdata

{
  firstName: "Tom"
}

Relaterade artiklar