1

SQLite データベースを JSON オブジェクトに変換したいと考えています。Web を検索した後、自分で関数を作成することにしました。私はまだ 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);   

}

この 2 番目の for ループと id="json" を使用してその要素にコンテンツを配置することは、最終的に真の JSON オブジェクトを取得したことを制御するためのものですが、残念ながらリストは表示されません。jsonall を宣言した後のアラートは、正しい JSON-Object を文字列として表示します。parseJSON が機能していないと思いますが、なぜ機能していないのかわかりません。JSON-Object の最後のエントリの後のコンマでしょうか? これはきれいではないことはわかっていますが、それでも機能するはずです...?

4

1 に答える 1