簡體   English   中英

如何添加到 node.js 中的現有 json 文件

[英]How do I add to an existing json file in node.js

我是 Node.js 和 JavaScript 的新手。我有一個results.json文件,我想保留一個從 web 中提取圖像的腳本的運行結果日志。但是,我當前的腳本只會覆蓋現有結果。 我如何建立或添加到results.json ,以便每個后續結果都記錄在 results.json 文件中? 我希望它有效 json。

這是一般示例:

var currentSearchResult = someWebSearchResult
var fs = require('fs');
var json = JSON.stringify(['search result: ' + currentSearchResult + ': ', null, "\t");
fs.writeFile("results.json", json);

結果.json:

[
    "search result: currentSearchResult"
]

如果您希望文件是有效的 JSON,您必須打開文件,解析 JSON,將新結果附加到數組,將其轉換回字符串並再次保存。

var fs = require('fs')

var currentSearchResult = 'example'

fs.readFile('results.json', function (err, data) {
    var json = JSON.parse(data)
    json.push('search result: ' + currentSearchResult)

    fs.writeFile("results.json", JSON.stringify(json))
})

一般來說,如果你想追加到文件,你應該使用:

fs.appendFile("results.json", json , function (err) {
   if (err) throw err;
   console.log('The "data to append" was appended to file!');
});

如果不存在,追加文件創建文件。

但是,如果您想先附加 JSON 數據,您可以讀取數據,然后您可以覆蓋該數據。

fs.readFile('results.json', function (err, data) {
    var json = JSON.parse(data);
    json.push('search result: ' + currentSearchResult);    
    fs.writeFile("results.json", JSON.stringify(json), function(err){
      if (err) throw err;
      console.log('The "data to append" was appended to file!');
    });
})

基於Promise的解決方案【Javascript (ES6) +Node.js (V10以上)

const fsPromises = require('fs').promises;
fsPromises.readFile('myFile.json', 'utf8') 
        .then(data => { 
                let json = JSON.parse(data);
                json.myArr.push({name: "Krishnan", salary: 5678});

                fsPromises.writeFile('myFile.json', JSON.stringify(json))
                        .then(  () => { console.log('Append Success'); })
                        .catch(err => { console.log("Append Failed: " + err);});
            })
        .catch(err => { console.log("Read Error: " +err);});

如果您的項目支持 Javascript ES8 ,那么您可以使用asyn/await而不是原生 promise。

我是Node.js和JavaScript的新手。 我有一個results.json文件,我想保留一個從網絡提取圖像的腳本的運行結果日志。 但是,我當前的腳本僅覆蓋現有結果。 我如何建立或添加到results.json以便隨后的每個結果都記錄在results.json文件中? 我希望它是有效的json。

這是一般示例:

var currentSearchResult = someWebSearchResult
var fs = require('fs');
var json = JSON.stringify(['search result: ' + currentSearchResult + ': ', null, "\t");
fs.writeFile("results.json", json);

和result.json:

[
    "search result: currentSearchResult"
]

我已經創建了數據。 用於維護以表格格式顯示的數據的 Js 文件。 包括從用戶那里讀取數據的文本框以及如何在表格中顯示通過文本框輸入的數據

"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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