如何在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#中反序列化并知道在使用接口键入属性的情况下使用哪种类型,因此可能具有不同的类型。非常感谢您的任何建议!
答案 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"}
希望有帮助。