2015-05-20 3 views
7

Ich habe eine ES6-Klasse von Babel erstellt und möchte JSON-Daten zuordnen, die von einem Server an die ES6-Klasse gesendet wurden.
Gibt es irgendeinen üblichen Weg das zu tun?So ordnen Sie JSON-Daten einer Klasse zu

user.js

export default class User { 
    constructor() { 
    this.firstName; 
    this.lastName; 
    this.sex; 
    } 
} 

app.js

import User from "./classes/User"; 

var data = JSON.parse(req.responseText); 
console.log(data.firstname); //Bob 
//now...just set data one by one? 

Antwort

20

Ich würde das JSON-Objekt in this fusionieren Object.assign wie folgt verwendet:

class User { 
    firstName; 
    lastName; 
    sex; 

    constructor(data) { 
    Object.assign(this, data); 
// ^^^^^^^^^^^^^^^^^^^^^^^^^^ 
    } 
} 

var data = JSON.parse(req.responseText); 
new User(data); 
+0

Ihre answe Ich frage mich (und hoffe, dass jemand mir eine Antwort geben kann), aber dieser * einfache * Konstruktor definiert jetzt * keine 'Benutzer'-Eigenschaften, die den Zweck einer Klassendefinition besiegen. Könnten Sie Ihrer Antwort vielleicht Eigenschaften als Beispiel hinzufügen? –

+0

Lösung mit 'Object.assign' funktioniert nur, wenn keine Eigenschaften eines bestimmten Klassentyps vorhanden sind. Wenn "Benutzer" die "Adresse" hätte, müssten wir 'this.address = new Address (data.address)' im 'User' Konstruktor aufrufen. – Vojta