我正在尝试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
充满了空值,为什么会这样呢?
答案 0 :(得分:3)
应该是Button lbtn = (Button)myDialog.findViewById(R.id.loginButton);
而不是item = {};
。
第一个是对象文字,第二个是数组文字。
为了更好地衡量,请item = [];
答案 1 :(得分:2)
这种情况是你创建一个数组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.
参考文献:
答案 2 :(得分:1)
如上所述,您需要将物品作为物品。这是一个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);