次のキーと値のペアをJSON.stringify()
しようとしています。値はオブジェクトの配列です。
var string = JSON.stringify({onlineUsers : getUsersInRoom(users, room)});
これは正しくなく、次のエラーが発生します。
var string = JSON.stringify({onlineUsers:getUsersInRoom(users、room)});
^
TypeError:循環構造をJSONに変換
これはメソッドです:
function getUsersInRoom(users, room) {
var json = [];
for (var i = 0; i < users.length; i++) {
if (users[i].room === room) {
json.Push(users[i]);
}
}
return json;
}
users
データ構造を追加:
[
{
id:1,
username:"",
room:"room 1",
client: {
sessionId:1,
key:value
}
},
{
// etc
}
]
ユーザーをユーザー配列に追加する関数が追加されました。
function addUser(client) {
clients.Push(client);
var i = clients.indexOf(client);
if (i > -1) {
users.Push({
id : i,
username : "",
room : "",
client : clients[i]
});
}
}
オブジェクトとオブジェクト内のキー/値のペアを含むJavaScript配列のスクリーンキャプチャを追加しました。
WebSocketオブジェクトを含むクライアント配列の画面キャプチャを追加しました。
正しく「文字列化」するにはどうすればよいですか{key: arrayOfObjects[{key:value,key:{}},{},{}]}
?
var data = { };
data.onlineUsers = getUsersInRoom();
var string = JSON.stringify(data);
これでうまくいきますか?
編集
エラーが循環型であることに気づきました。ユーザーまたはルームオブジェクトが循環参照を作成している可能性があります。
ユーザー>ルーム>ユーザー>ルームなど...