Javascript 如何将JSON数据映射到类

Javascript 如何将JSON数据映射到类,javascript,ecmascript-6,babeljs,Javascript,Ecmascript 6,Babeljs,我创建了一个ES6类,我想将从服务器获取的JSON数据映射到ES6类 有什么常见的方法可以做到这一点吗 User.js export default class User { constructor() { this.firstName; this.lastName; this.sex; } } import User from "./classes/User"; var data = JSON.parse(req.responseText); console

我创建了一个ES6类,我想将从服务器获取的JSON数据映射到ES6类
有什么常见的方法可以做到这一点吗

User.js

export default class User {
  constructor() {
    this.firstName;
    this.lastName;
    this.sex;
  }
}
import User from "./classes/User";

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

export default class User {
  constructor() {
    this.firstName;
    this.lastName;
    this.sex;
  }
}
import User from "./classes/User";

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

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

class User {
  firstName;
  lastName;
  sex;

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

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

您可以使用这个npm包将所有JSON映射到一个类。 它看起来像下面的一个:

import { property, toClass } from 'class-convert';

class UserModel {
  @property('i')
  id: number;

  @property()
  name: string;
}

const userRaw = {
  i: 1234,
  name: 'name',
};

// use toClass to convert plain object to class
const userModel = toClass(userRaw, UserModel);
// you will get a class, just like below one
{
  id: 1234,
  name: 'name',
}

您的回答让我感到疑惑(并希望有人能给我一个答案),但是这个简单的构造函数现在不再定义任何
用户
属性,这违背了类定义的目的。您是否可以将属性添加到您的答案中作为示例?使用
Object.assign
的解决方案仅在没有某些类类型的属性时有效。如果
用户
拥有
地址
我们需要在
用户
构造函数中调用
this.address=新地址(data.address)