【问题标题】:Inserting JSON data into Sqlite/webSQL database将 JSON 数据插入 Sqlite/webSQL 数据库
【发布时间】:2014-05-16 23:00:08
【问题描述】:

我正在从远程数据库中提取数据并获取此 JSON 数据:

{"list1":{"id":1, "item":"testobj1"},"list2":{"id":2, "item":"testobj2"},"list3":{"id":3, 
"item":"testobj3"},"list4":{"id":4, "item":"testobj4"},"list5":{"id":5, "item":"testobj5"}}

我现在可以遍历数据中的对象并在我的屏幕上显示对象列表。它工作正常:

var d = JSON.parse(hr.responseText);
databox.innerHTML = "";
for (var o in d) {
    if (d[o].item) {
        databox.innerHTML += '<p>' +     d[o].item + '</p>' + '<hr>';

    }
}

但是,现在我想将此数据插入到我的 Sqlite 数据库中。我不太确定如何告诉循环“d[o].id”和“d[o].item”是我想插入到我的数据库中的项目。

db.transaction(function(tx) {
    var sql = "INSERT OR REPLACE INTO testTable (id, item) " + "VALUES
    (?, ?)";
    log('Inserting or Updating in local database:');
    var d = JSON.parse(hr.responseText);
    var id = d[o].id;
    var item = d[o].item;
    for (var i = 0; i < d.length; i++) {
        log(d[o].id + ' ' + d[o].item);
        var params = [d[o].id, d[o].item];
        tx.executeSql(sql, params);
    }
    log('Synchronization complete (' + d + ' items synchronized)');
}, this.txErrorHandler, function(tx) {
    callback();
});

我希望有人可以看看这个循环并告诉我哪里出错了。提前谢谢了!

【问题讨论】:

  • d 是数组还是对象?如果它是一个对象,那么您的迭代将无法正常工作 (d.length is undefined)。

标签: javascript json sqlite for-loop


【解决方案1】:

您正在迭代d,就好像它是一个数组而不是一个对象。像这样的东西可能就是你要找的东西:

var d = JSON.parse(hr.responseText);
for (var o in d) {
    var params = [d[o].id, d[o].item];
    tx.executeSql(sql, params);
}

【讨论】:

  • 非常感谢您的提示! d 是一个对象。我还没有让它运行,但你认为从数组中插入数据会更容易吗?
  • 更简单?不一定,尽管在您的情况下它会更有意义。特别是如果您的内部对象的顺序很重要(因为...in 并不总是按照声明的顺序遍历您的属性)
猜你喜欢
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
  • 2015-01-24
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多