Javascript 字符串json具有空值

Javascript 字符串json具有空值,javascript,json,stringify,Javascript,Json,Stringify,我正在尝试将我的json字符串化- for (var i = 0 ; i < lines.length ; i++) { var label = lines[i]; var value = 1; item = []; item["label"] = label; item["value"] = value; jsonObj.push(item); } var jsonString = JSON.stringify(jsonObj);

我正在尝试将我的json字符串化-

for (var i = 0 ; i < lines.length ; i++) {

    var label = lines[i];
    var value = 1;

    item = [];
    item["label"] = label;
    item["value"] = value;

    jsonObj.push(item);
}

var jsonString = JSON.stringify(jsonObj);
for(变量i=0;i
在迭代过程中,
标签
都被相应地分配了正确的值


然而
jsonString
充满了空值,为什么会这样呢?

应该是
item={}而非
项=[]

第一个是对象文字,第二个是数组文字


对于良好的度量,do
var items={}

这种情况下,您需要创建一个数组
项=[]
,然后设置其字符串属性

然而
JSON.stringify
期望看起来像数组的东西是数组,所以它甚至不尝试迭代它的非数值属性

您的解决方案是将其替换为对象
{}

本规范摘录如下:

If Type(value) is Object, and IsCallable(value) is false
    If the [[Class]] internal property of value is "Array" then
        Return the result of calling the abstract operation JA with argument value.

Let len be the result of calling the [[Get]] internal method of value with argument "length".
Let index be 0.
Repeat while index < len
    Let strP be the result of calling the abstract operation Str with arguments ToString(index) and value.
    If strP is undefined
        Append "null" to partial.
    Else
        Append strP to partial.
    Increment index by 1.
让len作为调用参数为“length”的值的[[Get]]内部方法的结果。
设索引为0。
在索引
参考资料:


如前所述,您需要将物品设置为对象。下面是一个示例,让您从一个示例开始

var item;
var lines = ["a","b","c"];
var jsonObj = {};
jsonObj.items = [];

for (var i = 0 ; i < lines.length ; i++) {

    var label = lines[i];
    var value = 1;

    item = {};
   item["label"] = label;
   item["value"] = value;

    jsonObj.items.push(item);
    console.log(jsonObj);
}

var jsonString = JSON.stringify(jsonObj);
console.log(jsonString);
var项目;
变量行=[“a”、“b”、“c”];
var jsonObj={};
jsonObj.items=[];
对于(变量i=0;i
try
var item={}您正在创建一个数组,而不是一个对象。非常好的参考资料,manojlds刚刚到达那里,但是需要接受他的答案。@Ebikeneser所以您更喜欢速度而不是质量和细节级别?可以