角度转换ID到模型实例

时间:2017-12-18 00:27:58

标签: angular typescript angular-http

我正在开发一个Angular4项目并使用ta-json来序列化模型。

Backend Api正在回应这样的事情:

   {
      "id":1,
      "teams":[
         {
            "id":1,
            "name":"TeamName",
            "members":[
               {
                  "id":1000,
                  "team_id":1
               },
               {
                  "id":1001,
                  "team_id":1
               }
            ]
         }
      ]
   }

team.ts

import {JsonObject, JsonProperty, JsonType} from "ta-json";
import {Player} from './player';

@JsonObject()
export class Team {
    @JsonProperty()
    id: number;

    @JsonProperty()
    @JsonType(Player)
    players: Player[];
}

player.ts

import {JsonObject, JsonProperty, JsonType} from "ta-json";

@JsonObject()
export class Player {
    @JsonProperty()
    id: number;

    @JsonProperty()
    // @JsonType(Team)
    team: Team;
}

我想通过它的id将team_id(在api响应中显示)转换为Team对象。

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

您可以查看@BeforeDeserialized()装饰(有关详细信息,请参阅this link

所以你的Player课程看起来像这样

@JsonObject()
export class Player {
    @JsonProperty()
    id: number;

    @JsonProperty()
    team_id: number;

    @BeforeDeserialized()
    public createTeam(): Team {
        return new Team(this.team_id);
    }
}

还在Team类中添加构造函数,以便它可以将团队ID作为参数来实例化Team对象。以上代码没有经过测试或任何其他因为我只是投入了一些想法。

至于其他可能的解决方案,请参阅这些SO帖子,这些帖子也可能对您有所帮助。

How do I initialize a TypeScript object with a JSON object

JSON to TypeScript class instance?