Javascript Angular2-将JSON解析为对象

Javascript Angular2-将JSON解析为对象,javascript,json,angular,typescript,Javascript,Json,Angular,Typescript,示例:我有一个名为“Person”的实体类 在“Manager”类中,我得到一个类似于JSON的字符串: { "name" : "testName", "surname" : "testSurrname", "birthdate" : "JJJJ:MM:DD hh:mm:ss" } 那么如何将JSON解析为“Person” 另一个优雅的解决方案是使用JSON.parsereviver: public static fromJSON(json: any): Person

示例:我有一个名为“Person”的实体类

在“Manager”类中,我得到一个类似于JSON的字符串:

{
    "name" : "testName",
    "surname" : "testSurrname",
    "birthdate" : "JJJJ:MM:DD hh:mm:ss"
}
那么如何将JSON解析为“Person”


另一个优雅的解决方案是使用
JSON.parse
reviver:

public static fromJSON(json: any): Person {
    if (typeof json === 'string') {
        return JSON.parse(json, Person.reviver);
    } else if (json !== undefined && json !== null) {
        let person = Object.create(Person.prototype);
        return Object.assign(person, json);
    } else {
        return json;
    }
}

public static reviver(key: string, value: any): any {
    return key === '' ? Person.fromJSON(value) : value;
}

这个字符串从何而来,为什么会断开?假设你能解决这个问题,最好的方法是重写你的构造函数,使它看起来像
constructor(data){Object.assign(this,data);}
,然后用
newperson(this.jsondata)
调用它。对不起,我在这个.jsondata上写错了json。我只能在this.jsonData.stringify和this.jsonData.parse之间进行选择…数据已经stringify了为什么要使用stringify?你能加入聊天吗,它会更快:)
这个。
关于
新人的每个参数都是不必要的,它应该是
jsonData.*
thnx@ssube我忘记了
这个
因为我多次更新了代码:)
personData : Person;
jsonData : JSON;
public toPerson(data: string): Person {
    this.jsonData = JSON.parse(data);
    .?
    .?
    .?
    personData = new Person(....);
    return personData;
}
public toPerson(data: string): Person {
    let jsonData = JSON.parse(data);

    personData = new Person(jsonData.name, jsonData.surname, jsonData.birthdate);
    return personData;
}
public static fromJSON(json: any): Person {
    if (typeof json === 'string') {
        return JSON.parse(json, Person.reviver);
    } else if (json !== undefined && json !== null) {
        let person = Object.create(Person.prototype);
        return Object.assign(person, json);
    } else {
        return json;
    }
}

public static reviver(key: string, value: any): any {
    return key === '' ? Person.fromJSON(value) : value;
}