我正在开发一个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对象。
任何帮助都将不胜感激。
由于
答案 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帖子,这些帖子也可能对您有所帮助。