从javascript构造JSON对象

时间:2014-07-04 08:32:10

标签: javascript json

var jsonArr = [];
for (var i = 0; i < 10; i++) {
    jsonArr.push({
         id: i,
         optionValue: "abc"
    });
}
jsonArr = JSON.stringify(jsonArr);
console.log(jsonArr);

此代码为我提供以下输出:

[{"id":0,"optionValue":"abc"},{"id":1,"optionValue":"abc"},{"id":2,"optionValue":"abc"},{"id":3,"optionValue":"abc"},{"id":4,"optionValue":"abc"},{"id":5,"optionValue":"abc"},{"id":6,"optionValue":"abc"},{"id":7,"optionValue":"abc"},{"id":8,"optionValue":"abc"},{"id":9,"optionValue":"abc"}] 

但我需要

[{id:0,optionValue:"abc"},{id:1,optionValue:"abc"},{id:2,optionValue:"abc"},{id:3,optionValue:"abc"},{id:4,optionValue:"abc"},{id:5,optionValue:"abc"},{id:6,optionValue:"abc"},{id:7,optionValue:"abc"},{id:8,optionValue:"abc"},{id:9,optionValue:"abc"}] 

此输出,

我在谷歌搜索过,但它说没有双引号的ParameterName无效。

但我只需要这个输出,朋友的帮助吗?

3 个答案:

答案 0 :(得分:1)

试试这个:

 $(function () {
        var jsonArr = [];
        for (var i = 0; i < 10; i++) {
            jsonArr.push({
                id: i,
                optionValue: "abc"
            });
        }
        jsonArr = JSON.stringify(jsonArr).replace(/\"([^(\")"]+)\":/g, "$1:");
        console.log(jsonArr);
    });

答案 1 :(得分:1)

好吧,假设你需要的是字符串化的本机JS对象,我写了一个简单的序列化器。在生产环境中使用它之前,可能需要进行全面测试。

var jsStringify = function (obj) {
    var out = "";
    if (typeof obj == "object") {
        // object
        if (typeof obj.length == "undefined") {
            out += "{";
            var idx = 0;
            for (var n in obj) {
                if (obj.hasOwnProperty(n)) {
                    out += (idx > 0) ? "," : "";
                    out += n + ":" + jsStringify(obj[n]);
                    idx++;
                }
            }
            out += "}";
        }
        // array
        else {
            out += "[";
            var idx = 0; 
            for (var i = 0; i < obj.length; i++) {
                if (obj.hasOwnProperty(i)) {
                    out += (idx > 0) ? "," : "";
                    out += jsStringify(obj[i]);
                    idx++;
                }
            }
            out += "]";
        }
    } else {
        out += JSON.stringify(obj);
    }
    return out;
}

jsStringify([{
    id: "test",
    no: 1,
    nested: [1, [2, "3", {
        inline: ["\"double-quote-safe\""]
    }], 4]
}]);

输出:

[{id:"test",no:1,nested:[1,[2,"3",{inline:["\"double-quote-safe\""]}],4]}]

在此处试试:http://jsfiddle.net/SbWtN/

顺便说一句,如果值不包含任何双引号字符,只需正则表达式替换即可完成工作。

答案 2 :(得分:0)

试试这个:

var array = [];
for (var i = 0; i < 10; i++) {
  array.push({
     id: i,
     optionValue: "abc"
  });
}
console.log(array);