字符串json具有空值
String json has null values
我正在尝试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);
在迭代过程中,label
和value
都被分配了正确的值。
然而jsonString
充满了空值,为什么会出现这种情况?
应该是item = {};
而不是item = [];
。
第一个是对象字面值,第二个是数组字面值。
为了更好的测量,var items = {};
的情况是,你创建一个数组item = []
,然后设置它的字符串属性。
而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.
引用:
- 函数15.12.3把
- 15.12.3 stringify JA
如上所述,您需要将项目设置为对象。这里有一个JSFiddle,可以让您从一个示例开始。
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);
相关文章:
- 映射数组ES6时考虑空值
- Model中的Typeahead返回空值以形成输入字段
- JavaScript-HTML表单到JSON(空值)和格式
- webkit输入类型=在错误日期发送空值的日期
- 如何使用字符串创建空的JSON键(是否嵌套)
- 使用挖空从 JSON 预填充所选值以进行多项选择
- JSON 是否应包含空值
- jquery $.ajax 的 MVC 3 反序列化请求 json 到对象中填充空值而不是空白字符串
- Json - 检查子节点空值
- Json 数组返回空值
- JSON正在删除包含空值的属性
- 使用angular js的Json rest客户端无法填充数据(空值)
- 如何检查json中的空值
- 解析JSON对象数组-空值防止反转
- 如何在JSON对象中包含空值作为占位符
- 将表单序列化为不带空值的json
- 按字母顺序对 JSON 进行排序(最后为空值)
- 从 PHP => JSON => JS 时为空值
- 用数组中的空值反序列化JSON
- JSON对象的已知非空值字段返回空字符串