2011-04-13 164 views
0

我写了以下Javascript代码。这是最好的,我可以做的就是我的数据格式为有效的JSON:如何将数组对象放入JSON中?

var roles = getSelectedRoles(); // returns an Array object 

/* TODO: Find a better way to get the roles into my JSON data */ 
var rolesString = '["' + roles[0] + '"'; 
if (roles.length > 1) 
    for (var i = 1; i < roles.length; i++) 
     rolesString += ',"' + roles[i] + '"'; 
rolesString += ']';       

var lid = $('#lid').val(); 

var json = '{ "id": "' + lid + '", "roles":' + rolesString + '}'; 

正如你所看到的,我建我用JSON字符串连接循环经过我的Array对象。这是如此丑陋,它似乎应该是一个干净的方式插入我的数组数据到我的JSON。

回答

0

你可以尝试:

<script type="text/javascript"> 
var jsonObj = { 
    id: lid,//$('#lid').val() 
    roles:roles // getSelectedRoles() 
} 
var jsonStr = json_encode(jsonObj); 
</script> 

您可以找到函数:json_encode在这里

1

如果它只是将数组对象到另一个对象则:

var selRoles = getSelectedRoles(); 
var lid = $('#lid').val(); 
var json = { 
id:lid , 
roles: selRoles 
}; 

如果您需要整个对象被表示为一个字符串,那么你可以使用道格拉斯克罗克福德的JSON2.js来实现相同。

包括在你的网页上面提到的js文件,然后你使用:

var jsonString = JSON.stringify(json) //json is from previous code. 
0

你可以使用你的角色阵列的连接功能:

var rolesString = '["' + roles.join('", "') + '"]'; 
0

当前的浏览器提供了一个JSON对象类型可以使这种事情微不足道(JSON.stringify(obj))..例如,请参阅here