在JSON对象中插入数组

时间:2014-04-19 18:25:29

标签: javascript json

我有两个名为one和two的数组。 one包含字符串值和two int值。 我正在尝试:

var messageObject = { 'One': one,
                       'Two': two};
var serializedJSON = JSON.stringify(messageObject);
var json = JSON.parse(serializedJSON);
alert(json.One);

我得到了#34;未定义",尽管已填充数组。 他们正在从数据库接收数据,如下所示:

db.transaction(function(transaction) {
    transaction.executeSql('SELECT * FROM aluno', [], function(transaction, results) {
        len = results.rows.length, i;
        for (i = 0; i < results.rows.length; i++) {
            one[i] = results.rows.item(i).fieldOne;
            two[i] = results.rows.item(i).fieldTwo;
        }            
    }, null);
});

参见代码:

http://jsfiddle.net/U4C6r/2/

3 个答案:

答案 0 :(得分:1)

编辑答案:

问题似乎与DB-Query-Code有关。查询或回调从未执行过,请参阅:http://jsfiddle.net/U4C6r/11/


原始答案:

var messageObject = { 
  'One': one,
  'Two': two
};

如果您将密钥定义为字符串,则应按以下方式访问它们:

console.log(json['One']);

如果你想将它们作为对象的属性,你应该这样做:

var messageObject = { 
  One: one,
  Two: two
};

然后您可以像链接那样以链接方式访问数据:

console.log(json.One);

您还应该在IDE中看到不同之处 通过特定的语法 - 突出显示 - 看到了吗? :)

答案 1 :(得分:0)

编辑更新: 当你从webSQL中读取值时检查断点并检查你在循环中得到的对象的结构检查这个obj results.rows.item(i)

还要将脚本更改为此。我假设你有全局var 1 = [];和var 2 = [];声明。

var dynamicArrayContainer = { one : [], 
two : []};
db.transaction(function(transaction) {
transaction.executeSql('SELECT * FROM table', [], function(transaction, results) {
    for (var i = 0; i < results.rows.length; i++) {
        dynamicArrayContainer .one.push(results.rows.item(i).fieldOne);
        dynamicArrayContainer .two.push( results.rows.item(i).fieldTwo);
    }            
}, null);
});

试试这个,直接把你的值作为调试练习

var serializedJSON = JSON.stringify(dynamicArrayContainer);
var json = JSON.parse(serializedJSON);
alert(json.one);

答案 2 :(得分:0)

试试这个:

var messageObject = { One: 'one',
                       Two: 'two'};
var serializedJSON = JSON.stringify(messageObject);
var json = JSON.parse(serializedJSON);
alert(json.One);
祝你好运 :)

更新:在此回复发布后,Enquirer编辑了查询。此回复适用于原始查询(即当前查询的第一部分)