配列を含む正しい構造体で文字列が生成されます。 http://jsonviewer.stack.hu/配列は文字列化されていますが、TypeScript/javascriptでは使用できません
などのサイトでJSONを操作できますが、配列にアクセスしようとすると配列自体がnullになります。
まずインターフェース:
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;
};
アバターも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がnullであり、私はそれを介して相互作用することはできません。
ヒント?ありがとう、
出力のjsonを見てみると、 'Array Avatar'のログ行から何を得ることができるでしょうか。 – Mutahhir
'IPlayerJSON'は' avatarOriginal'を持っていませんが、 'toJSON'に追加しています – Aaron