首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Angular 7中的Json序列化中添加类型信息

如何在Angular 7中的Json序列化中添加类型信息
EN

Stack Overflow用户
提问于 2019-03-24 16:41:12
回答 1查看 2.5K关注 0票数 1

如何在Angular 7中的Json序列化中添加类型信息

大家好,为了得到这个结果,我需要在Angular 7中的Json序列化中添加类型信息(添加行"$type":"Person",):

代码语言:javascript
复制
{
    "$type": "Person",
    "id": 8,
    "firstName": "Anke",
    "lastName": "Winkler",
    …
}

我需要它,以便使用Json.NET在C#中反序列化,并且知道在使用接口类型的属性可能是不同类型的情况下使用哪种类型。非常感谢你的建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-24 17:08:05

这不是一个角度序列化问题,而是一个TypeScript/JavaScript问题。

您可以通过重写TypeScript类中的toJSON()方法来自定义序列化。

代码语言:javascript
复制
class User {
  public id: number;
  public firstName: string;
  public lastName: string;
  public age: number;

  public toJSON(): User {
    return Object.assign({}, this, {
      $type: 'User'
    });
  }
}

toJSON()方法要做的只是使用当前对象创建一个新对象,并向其添加$type属性。它将在您调用JSON.stringify()方法时调用。因此,您不需要在类中创建$type变量。

示例:

代码语言:javascript
复制
const newUser: User = new User();

newUser.id = 8;
newUser.firstName = "John";
newUser.lastName = "Doe";
newUser.age = 42;

const newUserAsJson: string = JSON.stringify(newUser);

console.log(newUserAsJson);
// Displays:
// {firstName: "John", lastName: "Doe", id: 8, age: 42, $type: "User"}

希望能有所帮助。

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

https://stackoverflow.com/questions/55322009

复制
相关文章

相似问题

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