gpt4 book ai didi

json - 通过简单的JS函数将SQLite转换为JSON-解析JSON

转载 作者:行者123 更新时间:2023-12-03 19:49:55 27 4
gpt4 key购买 nike

我想将SQLite数据库转换为JSON对象。在网上搜索后,我决定自己编写一个函数。我仍然是JS / JSON / jQuery的初学者,我认为以下代码应该可以工作:

function sqlite2json(){

newJson = '{ "$resources": [';

offlinedb = openDatabase (shortName, version, displayName, maxSize);

offlinedb.transaction(function(transaction) {

transaction.executeSql('SELECT * FROM Zaehlliste;', [],
function(transaction, result) {

if (result != null && result.rows != null) {

for (var k = 0; k < result.rows.length; k++) {

var row = result.rows.item(k);

newJson += '{ "Field0":"' + row.Field0 + '", "Field1":"' + row.Field1 + '", "Field2":"' + row.Field2 + '", "Field3":"' + row.Field3 + '", "Field4":"' + row.Field4 + '", "Field5":"' + row.Field5 + '"},'

}

jsonall = newJson + ']}';

alert(jsonall); //shows me a correct JSON as string

jsonobjoff = $.parseJSON(jsonall);

for (i = 0; i < jsonobjoff.$resources.length; i++) {

$('#json').append("<li>" + jsonobjoff.$resources[i].Field0 + " " + jsonobjoff.$resources[i].Field1 + " " + jsonobjoff.$resources[i].Field2 + " " + jsonobjoff.$resources[i].Field3 + " " + jsonobjoff.$resources[i].Field4 + " " + jsonobjoff.$resources[i].Field5 + "</li>");

}

}

},errorHandler);

},errorHandler, nullHandler);

}


这第二个for循环并将内容以其id =“ json”放入该元素只是为了控制,我终于得到了一个真正的JSON对象,但不幸的是没有列表出现。声明jsonall后的警报向我显示了正确的JSON对象作为字符串。我认为parseJSON不起作用,但是我不知道为什么它不起作用。在JSON对象的最后一个输入项之后可能是逗号吗?我知道这不干净,但仍然可以工作...?

最佳答案

您生成的json不正确。
您在每个对象之后添加尾随逗号(在您的第一个for循环中),但最后一个条目不应添加逗号,否则它不是有效的json。

改变这个:

 newJson += '{ "Field0":"' + row.Field0 + '", "Field1":"' + row.Field1 + '", "Field2":"' + row.Field2 + '", "Field3":"' + row.Field3 + '", "Field4":"' + row.Field4 + '", "Field5":"' + row.Field5 + '"},';


至:

if(k > 0) newJson += ',';
newJson += '{ "Field0":"' + row.Field0 + '", "Field1":"' + row.Field1 + '", "Field2":"' + row.Field2 + '", "Field3":"' + row.Field3 + '", "Field4":"' + row.Field4 + '", "Field5":"' + row.Field5 + '"}';


这将起作用(如果您的字符串中没有特殊字符)
我建议您使用此json编码器,而不是手动生成字符串,它也会处理特殊字符,您的这些字符会出现以下问题: https://github.com/douglascrockford/JSON-js/blob/master/json2.js

为此的代码:

newJson = '{ "$resources": [';更改为 newJson = { $resources: [] };

并在循环中:

newJson.$resources[k] = { Field0: row.Field0, Field1: row.Field1, Field2: row.Field2, Field3: row.Field3, Field4: row.Field4, Field5: row.Field5 };


您可以在此处使用 newJson.$resources[k] = row;,但如果行中有更多您不想显示的字段,它们也将被使用

创建json字符串:

jsonall = JSON.stringify(newJson);

关于json - 通过简单的JS函数将SQLite转换为JSON-解析JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18054600/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com