【发布时间】:2017-05-12 13:41:01
【问题描述】:
使用正确的结构(包括数组)生成一个字符串。我可以在 http://jsonviewer.stack.hu/ 等网站中浏览 JSON
但是当我尝试访问数组时,数组本身为空。
这是我的情况:
首先是接口:
export interface IPlayerJSON {
idPlayer: number,
name: string;
email: string,
arrayAvatar: Array<IAvatarJSON>,
};
export interface IAvatarJSON {
idAvatar: number,
nickName: string,
original: boolean,
signature: string,
};
然后是被覆盖的方法
public toJSON(): IPlayerJSON {
let json: IPlayerJSON;
json = {idPlayer: this.idPlayer, email: this.email, name: this.name, avatarOriginal: this.avatarOriginal.toJSON(),
arrayAvatar: []}
for (let r of this.arrayAvatar) {
json.arrayAvatar.push(r.toJSON());
};
return json;
};
Avatar 也有一个修改后的 toJSON。正如我所说,JSON.stringify 会生成正确且可导航的 JSON。
当我尝试补充水分时:
public static playerRehydrate(json: IPlayerJSON): Player {
let player : Player = new Player(null, null, null);
console.log('JSON ', json); // perfect, with array
player.setEmail(json.email);
player.setPlayerID(json.idPlayer);
player.setName(json.name);
console.log('Array Avatar ', json.arrayAvatar);
for (let r of json.arrayAvatar) { // throw error, no lenght of undefined
player.addAvatar(RehydrateService.avatarRehydrate(r));
};
return player;
};
json.arrayAvatar 为空,我无法通过它进行交互。
有什么建议吗?谢谢
【问题讨论】:
-
查看输出 json 以及从日志行
Array Avatar获得的内容会有所帮助。 -
IPlayerJSON没有avatarOriginal但您将其添加到toJSON
标签: javascript arrays json typescript