J'essaie de JSON.stringify()
la paire clé/valeur suivante, où la valeur est un tableau d'objets.
var string = JSON.stringify({onlineUsers : getUsersInRoom(users, room)});
Ceci est incorrect et donne l'erreur suivante:
var string = JSON.stringify ({onlineUsers: getUsersInRoom (users, room)});
^
TypeError: Conversion d'une structure circulaire en JSON
Voici la méthode:
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;
}
Ajout de la structure de données users
:
[
{
id:1,
username:"",
room:"room 1",
client: {
sessionId:1,
key:value
}
},
{
// etc
}
]
Fonction ajoutée pour ajouter un utilisateur au tableau des utilisateurs.
function addUser(client) {
clients.Push(client);
var i = clients.indexOf(client);
if (i > -1) {
users.Push({
id : i,
username : "",
room : "",
client : clients[i]
});
}
}
Capture d'écran ajoutée d'un tableau JavaScript contenant un objet ainsi que des paires clé/valeur à l'intérieur d'un objet.
Capture d'écran ajoutée du tableau des clients contenant des objets WebSocket.
Comment puis-je correctement "stringifier" {key: arrayOfObjects[{key:value,key:{}},{},{}]}
?
var data = { };
data.onlineUsers = getUsersInRoom();
var string = JSON.stringify(data);
Est-ce que cela fonctionnerait pour vous?
modifier
Je viens de remarquer que votre erreur est de type circulaire, votre objet utilisateur ou pièce crée probablement une référence circulaire.
Utilisateur> Chambre> Utilisateur> Chambre etc ...