如何将 JSON 数据映射到 class
How to map JSON data to a class
我通过 Babel 创建了一个 ES6 class,我想将从服务器获取的 JSON 数据映射到 ES6 class。
有什么通用的方法吗?
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?
我会使用 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 包 https://www.npmjs.com/package/class-converter 将所有 JSON 映射到一个 class。
它看起来像以下一个:
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',
}
我通过 Babel 创建了一个 ES6 class,我想将从服务器获取的 JSON 数据映射到 ES6 class。
有什么通用的方法吗?
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?
我会使用 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 包 https://www.npmjs.com/package/class-converter 将所有 JSON 映射到一个 class。 它看起来像以下一个:
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',
}