Angular2 - 解析JSON为对象
问题描述:
例子:我有一个实体 - 类名为“Person”Angular2 - 解析JSON为对象
constructor(name:string,surname:string,birthdate:string) {
this.name = name;
this.surname = surname;
this.birthdate = birthdate;
}
而在一个“经理”一流的我得到一个字符串,它看起来像一个JSON:
{
"name" : "testName",
"surname" : "testSurrname",
"birthdate" : "JJJJ:MM:DD hh:mm:ss"
}
那么如何将JSON解析成一个 “人”
personData : Person;
jsonData : JSON;
public toPerson(data: string): Person {
this.jsonData = JSON.parse(data);
.?
.?
.?
personData = new Person(....);
return personData;
}
答
一个更优雅的解决方案是使用JSON解析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;
}
这个字符串来自哪里,为什么它被打破JSON?假设你可以对此进行分类,最好的方法是重写你的构造函数,使其看起来像'constructor(data){Object.assign(this,data); }',然后用'new Person(this.jsondata)'调用它。 – 2017-03-07 16:57:21
对不起,我写了json错误 – ALSTRA