2015-05-20 32 views
7

Ho creato una classe ES6 per Babel e desidero mappare i dati JSON ottenuti da un server alla classe ES6.
C'è qualche modo comune per farlo?Come mappare i dati JSON a una classe

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? 

risposta

20

vorrei unire l'oggetto JSON in this utilizzando Object.assign, come segue:

class User { 
    firstName; 
    lastName; 
    sex; 

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

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

tuo answe mi domando (e sperando che qualcuno possa darmi una risposta), ma questo costrutto * plain * ora non * definisce * più le proprietà di 'User' che vanificano lo scopo di avere una definizione di classe. Potresti aggiungere proprietà alla tua risposta come esempio? –

+0

La soluzione con 'Object.assign' funziona solo quando non ci sono proprietà di alcuni tipi di classe. Se 'User' ha' indirizzo' dovremmo chiamare 'this.address = new Address (data.address)' nel costruttore 'User'. – Vojta

Problemi correlati