如何将一个JSON对象解析为TypeScript对象

68
我可以帮您将文本翻译成中文。以下是需要翻译的内容:

我目前正在尝试将接收到的JSON对象转换为具有相同属性的TypeScript类,但我无法使其工作。我做错了什么?

员工类

export class Employee{
    firstname: string;
    lastname: string;
    birthdate: Date;
    maxWorkHours: number;
    department: string;
    permissions: string;
    typeOfEmployee: string;
    note: string;
    lastUpdate: Date;
}

员工字符串
{
    "department": "<anystring>",
    "typeOfEmployee": "<anystring>",
    "firstname": "<anystring>",
    "lastname": "<anystring>",
    "birthdate": "<anydate>",
    "maxWorkHours": <anynumber>,
    "username": "<anystring>",
    "permissions": "<anystring>",
    "lastUpdate": "<anydate>"
    //I will add note later
}

我的尝试
let e: Employee = new Employee();

Object.assign(e, {
    "department": "<anystring>",
    "typeOfEmployee": "<anystring>",
    "firstname": "<anystring>",
    "lastname": "<anystring>",
    "birthdate": "<anydate>",
    "maxWorkHours": 3,
    "username": "<anystring>",
    "permissions": "<anystring>",
    "lastUpdate": "<anydate>"
});

console.log(e);

Typescript Playground链接


具体是什么问题?无法编译吗?如果是这样,出现了什么错误? - goenning
我编辑了我的问题。现在它可以工作了,但是该对象被识别为Object而不是Employee。 - moessi774
请查看此gist并在playground中尝试。 employee变量具有两个可用属性。 - goenning
可能是重复的问题:如何将 JSON 对象转换为 TypeScript 类 - Franklin Yu
12个回答

0

您可以将json转换为以下内容:

假设您有一个类:

export class Employee{
    firstname: string= '';
}

以及 JSON:

let jsonObj = {
    "firstname": "Hesham"
};

您可以将其转换为以下内容:
let e: Employee = jsonObj as Employee;

console.log(e); 的输出是:

{ firstname: 'Hesham' }


-3
if it is coming from server as object you can do 

this.service.subscribe(data:any) 保持数据的任何类型,它将解决问题。


“Any”类型是变量,当我获取到错误的对象时,可能需要在下面进行大量的if检查。该对象可能无法正确解析或存在缺失属性。 - Onur Dikmen
你应该使用json parse。Json.parse返回任何类型,但可以使用“as”语法转换为对象。 - Onur Dikmen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接