如何 JSON.stringify 对象数组

Posted

技术标签:

【中文标题】如何 JSON.stringify 对象数组【英文标题】:How to JSON.stringify an array of objects 【发布时间】: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:,,]

【问题讨论】:

能否请您也添加您的客户端数据结构。你的数组中一定有包含循环引用的东西。 【参考方案1】:
var data =  ;
data.onlineUsers = getUsersInRoom();

var string = JSON.stringify(data);

这对你有用吗?

编辑

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

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

【讨论】:

以上是关于如何 JSON.stringify 对象数组的主要内容,如果未能解决你的问题,请参考以下文章

如何 JSON.stringify 嵌套的对象数组 [关闭]

console.log 如何打印对象

JSON.parse JSON.stringify

js解析与序列化json数据(一)json.stringify()的基本用法

json.stringify()和json.parse()

JSON.stringify(),JSON.parse()