字符串json具有空值

时间:2015-08-17 09:11:44

标签: javascript json stringify

我正在尝试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);

在迭代过程中,labelvalue都会使用正确的值进行相应的分配。

但是jsonString充满了空值,为什么会这样呢?

3 个答案:

答案 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);