Q:

How to JSON.stringify an array of objects

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.

Added screen capture of the clients array containing WebSocket objects.

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

A:

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...

