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

时间:2019-03-24 08:41:12

标签: json angular serialization

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

大家好,我需要在Angular 7的Json序列化中添加类型信息,以便获得此结果(添加“ $ type”行:“ Person”,):

#define _GNU_SOURCE
#include <stdio.h>
#include <dlfcn.h>

typedef int (*open_func_t)(const char*, int, ...)

int open(const char *pathname, int flags, ...){
    // some custom code

    // what args should I supply to dlsym?
    return ((open_func_t)dlsym(RTLD_NEXT, "open"))(args);
}

我需要这样做,以便使用Json.NET在C#中反序列化并知道在使用接口键入属性的情况下使用哪种类型,因此可能具有不同的类型。非常感谢您的任何建议!

1 个答案:

答案 0 :(得分:3)

这不是Angular序列化问题,而是TypeScript / JavaScript问题。

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

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变量。

示例:

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"}

希望有帮助。