2013-07-18 83 views
1

我想將查詢結果格式化爲包含每個記錄的數組對象的單個JSON對象。需要編寫腳本的幫助 - JSON.stringify函數正在構建一個對象數組(我的JSON從裏到外!)。如何將node.js sqlite3記錄集格式化爲記錄數組的JSON對象

我總是可以編寫一個函數來手動構建JSON,但我有一種感覺,那就是已經有了一個函數來執行我正在尋找的功能。我無法找到它。

JSON字符串我想:

{["id":1,"info":"Ipsum 0"], ["id":2,"info":"Ipsum 1"], 
["id":3,"info":"Ipsum 2"], ["id":4,"info":"Ipsum 3"] (and so on) } 

實際結果

[{"id":1,"info":"Ipsum 0"},{"id":2,"info":"Ipsum 1"}, 
{"id":3,"info":"Ipsum 2"},{"id":4,"info":"Ipsum 3"}, 
{"id":5,"info":"Ipsum 4"},{"id":6,"info":"Ipsum 5"}, 
{"id":7,"info":"Ipsum 6"},{"id":8,"info":"Ipsum 7"}, 
{"id":9,"info":"Ipsum 8"},{"id":10,"info":"Ipsum 9"}] 

到目前爲止我的代碼(基於this example)基於

var sqlite3 = require('sqlite3').verbose(); 
var db = new sqlite3.Database(':memory:'); 

db.serialize(function() { 
    db.run("CREATE TABLE lorem (info TEXT)"); 

    var stmt = db.prepare("INSERT INTO lorem VALUES (?)"); 
    for (var i = 0; i < 10; i++) { 
     stmt.run("Ipsum " + i); 
    } 
    stmt.finalize(); 

    var sql = "SELECT rowid AS id, info FROM lorem"; 

    // Print the records as JSON 
    db.all(sql, function(err, rows) { 
     console.log(JSON.stringify(rows)); 
    }); 

}); 

db.close(); 
+0

令人驚訝的結果是一組對象的結果? –

+0

也許我將它轉換爲JSON的功能錯誤。我希望看到我描述的格式的結果。 –

+0

再一次:有什麼令人驚訝的呢?你對JSON格式有很好的瞭解嗎? – gustavohenke

回答

2

我知道JSON我期待整個記錄集都被捲曲的br包圍ackets,每個記錄都用一個方括號括起來。但我看到的是相反的情況。

不,你有它落後。數據庫結果將建模爲對象數組 - 數組1表示整個查詢的結果,數組中的每個對象表示單個結果記錄。在JSON中,數組使用方括號,對象使用大括號(與實際的JavaScript代碼相同)。

相關問題