如何将JSON数据映射到类

Nig*_*iri 15 javascript ecmascript-6 babeljs

我创建了Babel的ES6类,我想将从服务器获取的JSON数据映射到ES6类.
有什么常见的方法吗?

user.js的

export default class User {
  constructor() {
    this.firstName;
    this.lastName;
    this.sex;
  }
}
Run Code Online (Sandbox Code Playgroud)

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?
Run Code Online (Sandbox Code Playgroud)

小智 30

我会将JSON对象合并到this使用中Object.assign,如下所示:

class User {
  firstName;
  lastName;
  sex;

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

var data = JSON.parse(req.responseText);
new User(data);
Run Code Online (Sandbox Code Playgroud)

  • 使用 Object.assign 的解决方案仅在没有某些类类型的属性时才有效。如果`User` 有`address`,我们需要在`User` 构造函数中调用`this.address = new Address(data.address)`。 (2认同)