gpt4 book ai didi

json - 从 Typescript 解析 JSON 恢复数据成员但不是类型 : cannot call methods on result

转载 作者:搜寻专家 更新时间:2023-10-30 20:33:03 26 4
gpt4 key购买 nike

当我将对象 p1 的 JSON 字符串化结果解析回另一个对象 p2 时,第二个对象获取与第一个对象相关联的数据,但我无法对其调用任何网络方法。使用 http://www.typescriptlang.org/Playground/我尝试了以下方法:

class Person
{
constructor(public name: string, public age: number) {
}
Age() { return this.age; }
}

// Create a person
var p: Person = new Person("One", 1);

// Create a second person from the JSON representation
// of the first (NOTE: assert it is of type Person!)
var p2: Person = <Person>JSON.parse(JSON.stringify(p));

document.writeln("Start");

document.writeln(p.name); // OK: One
document.writeln(p.Age()); // OK: 1

document.writeln(p2.name); // OK: One
document.writeln(p2.age; // OK: 1
document.writeln(p2.Age()); // ERROR: no method Age() on Object

document.writeln("End");

如何解析 JSON 数据并获得正确的 Person 对象?

最佳答案

JSON 仅代表数据,不代表任何行为。

您可以在对象上创建一个方法,该方法接受 JSON 对象并从中提取数据,但 JSON 对象不能仅传输纯数据的行为(方法等)。

class Person
{
constructor(public name: string, public age: number) {
}

Age() { return this.age; }

static fromJson(json: string) {
var data = JSON.parse(json);
return new Person(data.name, data.age);
}
}

var p: Person = new Person("One", 53);
var jsonPerson = JSON.stringify(p);

var p2: Person = Person.fromJson(jsonPerson);

alert(p2.Age().toString());

关于json - 从 Typescript 解析 JSON 恢复数据成员但不是类型 : cannot call methods on result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17449074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com