簡體   English   中英

為什么我的JSON文件包含[object Object]?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM