Как добавить информацию о типе в сериализации Json в Angular 7 - PullRequest
0 голосов
/ 24 марта 2019

как добавить информацию о типе в сериализации Json в Angular 7

Привет всем, мне нужно добавить информацию о типе при сериализации Json в Angular 7, чтобы получить этот результат (добавление строки "$ type": "Person",):

{
    "$type": "Person",
    "id": 8,
    "firstName": "Anke",
    "lastName": "Winkler",
    …
}

Мне это нужно для того, чтобы десериализовать в C # с помощью Json.NET и знать, какой тип использовать в случае свойств, которые типизированы интерфейсом и, следовательно, могут быть разных типов. Большое спасибо за любые советы!

1 Ответ

3 голосов
/ 24 марта 2019

Это не проблема Angular serialization, а скорее проблема TypeScript / JavaScript.

Вы можете настроить сериализацию, переопределив метод toJSON() в ваших классах TypeScript.

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...