![](/img/trans.png)
[英]Why does Object.assign numbers my array of objects after copying a JSON data file?
[英]why does my JSON file contain [object Object]?
我正在使用sqlite3和nodeJS,並查詢數據庫。 我想將查詢復制到json文件中。 我遇到了具有字符串和對象的json文件的問題。 為什么我的JSON文件包含:
[object Object]
這是我的代碼:
db.all(sql, [], (err, rows) => {
if(err) {
throw err;
}rows.forEach((row) => {
arr_string = JSON.parse(JSON.stringify(row));
fs.writeFile("tempo.json", arr_string, function(err){
});
console.log(arr_string);
});
});
我想最終將ajax請求用於這些條目。
我認為將JSON數據存儲到SQLite時,不會對它進行字符串化處理。 如果您將JSON數據直接存儲到SQLite中,它將以[object Object]格式存儲。 我的建議是在存儲在SQLite中的同時對數據進行字符串化處理。 並且在檢索時僅解析它。 這樣您的問題就會解決。
正如您使用JSON.parse一樣, arr_string
實際上不是字符串。 刪除JSON.parse
調用。
arr_string = JSON.parse(JSON.stringify(row));
//^---------^--- This is parsing the string back to a new object.
您正在將字符串化的項目解析為新的Object,因此node.js文件編寫器試圖將對象寫入寫流,從而將其解釋為[object Object]
。
只需省略JSON.parse
,以使流實際上是一個字符串實例:
arr_string = JSON.stringify(row);
此外,您應該匯總結果並只寫入一次,或追加到文件中:
db.all(sql, [], (err, rows) => {
if(err) {
throw err;
}
let _strings = [];
const newline_separator = ''; // <-- use whatever separator you need.
rows.forEach((row) => {
arr_string = JSON.stringify(row);
console.log(arr_string);
_strings.push(arr_string);
});
fs.writeFile("tempo.json", _strings.join(newline_separator), function(err){});
});
由於它是json,建議您為我們提供更精確的輸入,以便我們可以猜測預期的結果。
JSON.stringify()方法將JavaScript值轉換為JSON字符串
arr_string = JSON.stringify(row);
“現在這樣做的問題是,現在JSON文件僅寫入最后一行(我查詢了4),而且我無法調用arr_string.caphi,因為它不再是對象了”
Create an empty array(list) and push each result of query in array.And then
finally convert it into JSON.
示例代碼:
var rows=[{"holla":"bolla"},{"holla":"bolla1"}];
console.log(JSON.stringify(rows));
JSON.stringify()
獲取JSON對象並返回String
JSON.parse()
接受String並返回JSON對象
嘗試:
rows.forEach((row) => {
arr_string = JSON.stringify(row); // 'row' data is converted to String
fs.writeFile("tempo.json", arr_string, function(err){
});`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.