如何 JSON.stringify 对象数组

How to JSON.stringify an array of objects

我正在尝试 JSON.stringify() 以下 key/value 对,其中值是一个对象数组。

var string = JSON.stringify({onlineUsers : getUsersInRoom(users, room)});

这是不正确的,会出现以下错误:

var string = JSON.stringify({onlineUsers : getUsersInRoom(users, room)});

                ^

TypeError: Converting circular structure to 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 数组的屏幕截图,其中包含一个对象以及对象内部的 key/value 对。

添加了包含 WebSocket 对象的客户端数组的屏幕截图。

我该如何正确"stringify"{key: arrayOfObjects[{key:value,key:{}},{},{}]}?

var data = { };
data.onlineUsers = getUsersInRoom();

var string = JSON.stringify(data);

这对你有用吗?

编辑

我刚刚注意到您的错误是循环类型,您的用户或房间对象可能正在创建循环引用。

User > Room > User > Room etc...