Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript对象到对象映射_Javascript_Typescript - Fatal编程技术网

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));