动态地在JavaScript中创建JSON对象

时间:2015-04-15 15:20:28

标签: javascript json worklight-adapters

我需要使用for循环在JavaScript中动态创建JSON对象。我尝试过使用array.Push方法,但它无效。我只获得存储的第一个值。迭代的剩余值未被存储。

这就是我的尝试:

var array = [];
    for (var i = 0; i < 4; i++) {
        var username = drlist.reportees[i].name;
        var think40 = getthink40(n,m);
        if (think40.isSuccessful){
            var result = think40.array;
            var length = result.length;
            var tes= 0;
            for (var j = 0; j < length-1; j++){
                tes = tes + parseFloat(result[j].duration);
            }
            var hours = tes/60;
            var think = (hours/40)*100;
            if (think > 100)
                {
                think =100;
                }
            array.push( {
                    name: username,
                    hours: think
                });
                }
        return array;
    }

2 个答案:

答案 0 :(得分:2)

试试这个......

var jsonArray = [];
function test (){
for (var i=0; i<3;i++)
{
   var jsonObject = {'a':1, 'b':2}; jsonArray.push(jsonObject);
}
return jsonArray;
}

注意:您将返回jsonObject而不是jsonArray。您应该返回jsonArray。

答案 1 :(得分:0)

在JavaScript中创建和操作JSON对象与任何其他类型的对象没有太大区别,但确实有一些限制。这些主要围绕JSON支持的数据类型,最值得注意的两个是缺少日期和函数。

JavaScript对象几乎可以包含任何内容(ES6和符号越来越多),但JSON是其中有限的子集。 JSON spec简短易读(完整的图片!),所以我建议从那里开始。正如您在规范中看到的那样,值类型包括字符串,数字,对象,数组,布尔关键字和null。不支持日期 - 通过将它们格式化为ISO 8601字符串 - 或函数来轻松解决。

要将有效的JavaScript对象转换为最终的JSON表单,需要进行有限数量的字符串格式化和转义。大多数现代浏览器都有global JSON API这样做,同时提供解析和渲染(stringify)方法。这是您codec以及操作JSON时的第一步也是最后一步。

在您的示例中,您将正常构建对象,并根据需要分配属性(foo.bar = 3)。最后,要返回JSON(实际上只是JS中的一个字符串),您将获取您创建的对象并将其传递给JSON.stringify。这将生成一个有效,安全,转义的JSON字符串,适合传递给Web服务和其他脚本。