如何将Array对象放入JSON?

| 我已经编写了以下Javascript代码。这是将数据格式化为有效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 + \'}\';
如您所见,我正在通过字符串对象通过Array对象循环构建JSON。这太丑陋了,似乎应该有一种将Array数据插入JSON的干净方法。     
已邀请:
如果只是将数组对象插入另一个对象,则:
var selRoles = getSelectedRoles(); 
var lid = $(\'#lid\').val();  
var json = {
 id:lid ,
 roles: selRoles
};
如果需要将整个对象表示为String,则可以使用Douglas Crockford的JSON2.js来实现。 在页面中包含上述js文件,然后使用:
var jsonString = JSON.stringify(json) //json is from previous code.
    
你能试一下吗:
<script type=\"text/javascript\">
var jsonObj = {
    id: lid,//$(\'#lid\').val()
    roles:roles // getSelectedRoles()
}
var jsonStr = json_encode(jsonObj);
</script>
您可以在此处找到函数:json_encode     
您可以使用角色数组的join函数:
var rolesString = \'[\"\' + roles.join(\'\", \"\') + \'\"]\';
    
当前的浏览器提供了JSON对象类型,可以使这种事情变得微不足道(JSON.stringify(obj))..例如,请参见此处     

要回复问题请先登录注册