如何将Array对象放入JSON?

时间:2011-04-13 18:08:34

标签: javascript arrays 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 + '}';

正如您所看到的,我正在构建我的JSON,其字符串连接通过我的Array对象循环。这是如此丑陋,似乎应该有一种干净的方式将我的数据插入我的JSON。

4 个答案:

答案 0 :(得分:1)

如果它只是将数组对象插入另一个对象,那么:

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.

答案 1 :(得分:0)

你可以尝试:

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

您可以在此处找到功能:json_encode

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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