Javascript 如何将JSON数据映射到类
我创建了一个ES6类,我想将从服务器获取的JSON数据映射到ES6类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
有什么常见的方法可以做到这一点吗 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)
。