2017-01-21 48 views
1
var clients = []; 

var tmp = []; 

tmp["username"] = rows[0].username; 
tmp["rank"] = rows[0].rank; 
tmp["lastaction"] = "0"; 
tmp["connection"] = connection; 
clients.push(tmp); 

JSON.stringify(clients) 

我初始化了一个数组(客户端)并将一个关联数组(tmp)推送到客户端数组。 但是,如果我“串”客户端,它会返回“[[]]”。JSON.stringify:JSON字符串将为空

我错了什么?

预先感谢您。

+0

尝试像下面。 var tmp = {}; js中没有关联数组的概念。它是json对象。 – rajesh

回答

1

你应该把tmp到对象文本,而不是一个数组文本。

var clients = []; 
 

 
var tmp = {}; 
 

 
tmp["username"] = "foo"; 
 
tmp["rank"] = 1; 
 
tmp["lastaction"] = "0"; 
 
tmp["connection"] = "bar"; 
 
clients.push(tmp); 
 

 
console.log(JSON.stringify(clients))

3

更新你这样的代码

​​

Asssociative阵列并没有直接支持在JavaScript中你可以为对象

+0

谢谢,但发送到node.js客户端时会引发错误: connection.sendUTF(JSON.stringify({response:“loginsucceed”,onlinelist:JSON.stringify(clients)})); “TypeError:将圆形结构转换为JSON” – Reese

+1

请按照此链接可能会帮助您 http://stackoverflow.com/questions/11616630/json-stringify-avoid-typeerror-converting-circular-structure-to -json –

1

需要初始化tmp作为一个对象:

var clients = []; 
 

 
var tmp = {}; 
 

 
tmp["username"] = 'username'; 
 
tmp["rank"] = 1 
 
tmp["lastaction"] = 2 
 
tmp["connection"] = 3 
 
clients.push(tmp); 
 

 
console.log(JSON.stringify(clients));