642 Stimmen

Wie konvertiere ich ein JSON-Objekt in eine TypeScript-Klasse?

Ich lese ein JSON-Objekt von einem entfernten REST-Server. Dieses JSON-Objekt hat alle Eigenschaften einer TypeScript-Klasse (nach Design). Wie kann ich dieses empfangene JSON-Objekt in eine Typvariable umwandeln?

Ich möchte keine TypeScript-Variable auffüllen (d. h. einen Konstruktor haben, der dieses JSON-Objekt übernimmt). Es ist groß und das Kopieren jedes einzelnen Unterobjekts und jeder Eigenschaft würde viel Zeit in Anspruch nehmen.

Update: Sie können es jedoch in eine TypeScript-Schnittstelle umwandeln!

4voto

Verwenden Sie die 'as'-Deklaration:

const data = JSON.parse(response.data) as MyClass;

3voto

Jayant Varshney Punkte 1668

Sie können eine Schnittstelle Ihres Typs (SomeType) erstellen und das Objekt darin umwandeln.

const typedObject: SomeType =  responseObject;

2voto

Nilupul Heshan Punkte 479

FÜR JAVA-LIEBHABER

Erstelle eine POJO-Klasse

export default class TransactionDTO{
    constructor() {
    }
}

Erstelle ein leeres Objekt nach Klasse

let dto = new TransactionDto()   // ts object
let json = {name:"Kamal",age:40} // js object

let transaction: TransactionDto = Object.assign(dto,JSON.parse(JSON.stringify(json)));//conversion

1voto

Amir Mehrabi Punkte 95

https://jvilk.com/MakeTypes/

Sie können diese Seite verwenden, um einen Proxy für Sie zu generieren. Es generiert eine Klasse und kann Ihr Eingabe-JSON-Objekt analysieren und überprüfen.

0voto

Lars Klingsten Punkte 21

Übergeben Sie das Objekt so, wie es ist, an den Klassenkonstruktor; keine Konventionen oder Überprüfungen

interface iPerson {
   name: string;
   age: number;
}

class Person {
   constructor(private person: iPerson) { }

   toString(): string {
      return this.person.name + ' ist ' + this.person.age;
   }  
}

// führt dies aus // 
const object1 = { name: 'Watson1', age: 64 };
const object2 = { name: 'Watson2' };            // Alter fehlt

const person1 = new Person(object1);
const person2 = new Person(object2 as iPerson); // passt jetzt zum Konstruktor

console.log(person1.toString())  // Watson1 ist 64
console.log(person2.toString())  // Watson2 ist undefined

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X