我写了以下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。
答案 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