【问题标题】:How to JSON.stringify an array of objects如何 JSON.stringify 对象数组
【发布时间】:2016-05-07 00:44:08
【问题描述】:

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

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

这是不正确的,并给出以下错误:

var string = JSON.stringify({onl​​ineUsers : 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:{}},{},{}]}

【问题讨论】:

  • 能否请您也添加您的客户端数据结构。你的数组中一定有包含循环引用的东西。

标签: javascript arrays json object stringify


【解决方案1】:
var data = { };
data.onlineUsers = getUsersInRoom();

var string = JSON.stringify(data);

这对你有用吗?

编辑

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

用户 > 房间 > 用户 > 房间等...

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2019-08-23
    • 1970-01-01
    • 2015-03-31
    • 2015-07-06
    • 2015-04-14
    相关资源
    最近更新 更多