首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Typescript : JSON到Typescript对象

Typescript : JSON到Typescript对象
EN

Stack Overflow用户
提问于 2017-03-26 01:15:42
回答 2查看 2.5K关注 0票数 0

我只想反序列化我从我的服务器API得到的JSON。

对于这里提到的大多数解决方案(没有使用任何第三方库),看起来问题都解决了。例如,在这个SO线程上投票最多的答案是:HERE

但我观察到的警告是,当json响应中有一些我不期望的额外属性时,行为并不是我所期望的。

让我们举个例子:

代码语言:javascript
运行
复制
class Person {
   id: number;
   name: string;
}

let jsonString = `{
   "id": 1,
   "name": "sumit",
   "age": 23
}`;

let person: Person = Object.assign(new Person(), JSON.parse(jsonString));

console.log(Object.keys(person));
console.log(JSON.stringify(person));

因此,当我稍后使用" Person“对象时,我希望它只包含Person类中提到的那些属性,毕竟"person”是"person“类型。但令人惊讶的是,在序列化person时,它包含了一些不在Person类中的额外属性。这里的“年龄”

上面的输出是:

代码语言:javascript
运行
复制
["id", "name", "age"]
{"id":1,"name":"sumit","age":23}

现在,我如何确保在反序列化之后,对象"person“没有任何额外的属性。

EN

回答 2

Stack Overflow用户

发布于 2019-10-08 14:38:31

如果从JSON到Person对象使用JSON.Parse,则不会创建Person对象的原型。这意味着,例如,如果您在Person对象上添加了getter,则无法访问它,因为它在JSON上不可用。您需要做的是创建一个新的Person对象并映射JSON中的每个属性。

有一些库可以将JSON序列化/反序列化为对象(Person类)。请在下面的库中查看,以供参考。

https://www.npmjs.com/package/@peerlancers/json-serialization

票数 0
EN

Stack Overflow用户

发布于 2021-05-21 23:20:51

其他的答案是正确的。您应该考虑使用3-d party库来进行正确的typescript类-json序列化,比如https://www.npmjs.com/package/ts-jackson

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43019452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档