Javascript 字符串json具有空值
我正在尝试将我的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);
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={}代码>而非项=[]代码>
第一个是对象文字,第二个是数组文字
对于良好的度量,dovar 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
tryvar item={}代码>您正在创建一个数组,而不是一个对象。非常好的参考资料,manojlds刚刚到达那里,但是需要接受他的答案。@Ebikeneser所以您更喜欢速度而不是质量和细节级别?可以