Javascript对象到对象映射
考虑以下类型脚本类:Javascript对象到对象映射,javascript,typescript,Javascript,Typescript,考虑以下类型脚本类: export class Team { _id: any; name: string; tasklists: Array<Tasklist>; } export class Tasklist { _id: any; name: string; groups: Array<Group>; } export class Group { _id: any; name: string; }
export class Team {
_id: any;
name: string;
tasklists: Array<Tasklist>;
}
export class Tasklist {
_id: any;
name: string;
groups: Array<Group>;
}
export class Group {
_id: any;
name: string;
}
我可以自己编写一个函数来进行转换。但由于我不熟悉Javascript/Typescript,我想知道是否有内置函数或可能的库使这类事情变得容易。您可以在类中重写
toJSON
方法。下面是一个工作示例:
class Team {
constructor(private _id: any, private name: string, private tasklists: Array<Tasklist>) {}
toJSON() {
return {
category: "team",
text: this.name,
nodes: this.tasklists
}
}
}
class Tasklist {
constructor(private _id: any, private name: string, private groups: Array<Group>) {}
toJSON() {
return {
category: "tasklist",
text: this.name,
nodes: this.groups
}
}
}
class Group {
constructor(private _id: any, private name: string) {}
toJSON() {
return {
category: "group",
text: this.name
}
}
}
let team = new Team(
1,
"team_1",
[
new Tasklist(
12,
"task_1",
[
new Group(
85,
"group_1"
)
]
)
]
)
console.log(JSON.stringify(team, null, 4));
班级团队{
构造函数(private _id:any,private name:string,private tasklists:Array){}
toJSON(){
返回{
类别:“团队”,
text:this.name,
节点:这是一个任务列表
}
}
}
类任务列表{
构造函数(private _id:any,private name:string,private groups:Array){}
toJSON(){
返回{
类别:“任务列表”,
text:this.name,
节点:此为.groups
}
}
}
班级{
构造函数(private _id:any,private name:string){}
toJSON(){
返回{
类别:“集团”,
text:this.name
}
}
}
让团队=新团队(
1.
“第一队”,
[
新任务清单(
12,
“任务1”,
[
新组(
85,
“第1组”
)
]
)
]
)
log(JSON.stringify(team,null,4));
还有一个带着它去打字游戏场
我用Team[]序列化更新了对象。能否将对象序列化为JSON,然后使用下划线.js映射该对象?谢谢,这非常有效。但是,当我将团队[]传递给JSON.stringify时,不会调用toJSON方法。有什么想法吗?
class Team {
constructor(private _id: any, private name: string, private tasklists: Array<Tasklist>) {}
toJSON() {
return {
category: "team",
text: this.name,
nodes: this.tasklists
}
}
}
class Tasklist {
constructor(private _id: any, private name: string, private groups: Array<Group>) {}
toJSON() {
return {
category: "tasklist",
text: this.name,
nodes: this.groups
}
}
}
class Group {
constructor(private _id: any, private name: string) {}
toJSON() {
return {
category: "group",
text: this.name
}
}
}
let team = new Team(
1,
"team_1",
[
new Tasklist(
12,
"task_1",
[
new Group(
85,
"group_1"
)
]
)
]
)
console.log(JSON.stringify(team, null, 4));