How to JSON.stringify an array of objects

32,322
var data = { };
data.onlineUsers = getUsersInRoom();

var string = JSON.stringify(data);

Would this work for you?

edit

I just noticed your error is circular type, your user or room object is probably creating a circular reference.

User > Room > User > Room etc...

Share:
32,322
crmepham
Author by

crmepham

I am currently coding in Java, Kotlin and Go.

Updated on July 09, 2022

Comments

  • crmepham
    crmepham almost 2 years

    I am attempting to JSON.stringify() the following key/value pair, where the value is an array of objects.

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

    This is incorrect and gives the following error:

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

                    ^
    

    TypeError: Converting circular structure to JSON

    This is the method:

    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;
    }
    

    Added users data structure:

    [
     {
         id:1,
         username:"",
         room:"room 1",
         client: {
             sessionId:1,
             key:value
         }
     },
     {
         // etc
     }
    ]
    

    Added function to add user to users array.

    function addUser(client) {
        clients.push(client);
        var i = clients.indexOf(client);
        if (i > -1) {
            users.push({
                id : i,
                username : "",
                room : "",
                client : clients[i]
            });
        }
    }
    

    Added screen capture of JavaScript array containing an object as well as key/value pairs inside an object.

    enter image description here

    Added screen capture of the clients array containing WebSocket objects. enter image description here

    How do I correctly "stringify" {key: arrayOfObjects[{key:value,key:{}},{},{}]}?