想要调整配置文件来运行程序,我得到了几行使脚本运行。但是我需要添加更多的单元,然后在.json中添加500个具有相同配置信息的文件,但是从每个文件中编辑两行。
如何在node.js中最简单地加载.json文件,删除配置中的两行并在每个最简单的内容中写入新行?
非常感谢您的帮助
我需要调整" secretCode"在每个文件中换一个新文件,即
<?php
$dateTime=date("Y_m_d_H_i_s");
$headers = "From: SOME ROBOT <somerobotyouusedtoknow@somecompany.com>\r\n" .
"Reply-to: SOME HUMAN <somehumanyoudoknow@somecompany.com>";
"Subject: My custom subject on including date of: " . $dateTime . "\r\n" .
$emailto = "JayRizzo@somecompany.com";
$emailbody = "This is the body of the email: Error message";
error_log($emailbody, 1, $emailto, $headers);
?>
答案 0 :(得分:0)
下面你将找到如何替换文本文件中的一行以供参考和一个好的一行。但是你真的不应该使用这种方法来更新JSON文件。您需要的是解析JSON数据,以便您可以编辑数据并将编辑后的数据保存在文本文件中。
因此,我们不是在谈论这里的行,而是关于已经序列化为JSON格式的数据。必须更新存储的数据。
有很多问题,逐行编辑JSON文件可能会导致问题。最后,文件可能会损坏并使您的系统进入不良状态。
下面的两个实现都是同步的,因为初学者可能更容易理解。
在处理生产数据时,请务必始终创建备份。
如何操作
此脚本将解析json文件,更改secretCode并将其保存回同一文件。
var fs = require('fs');
function replaceDataInJsonFile(filePath, propertyName, newData) {
// Read the complete file content into a tring.
var fileText = fs.readFileSync(filePath, 'utf-8');
// Create an object containing the data from the file.
var fileData = JSON.parse(fileText);
// Replace the secretCode in the data object.
fileData[propertyName] = newData;
// Create JSON, containing the date from the data object.
fileText = JSON.stringify(fileData, null, " ");
// Write the updte file content to the disk.
fs.writeFileSync(filePath, fileText, 'utf-8');
}
// Call the function above.
replaceDataInJsonFile('test.json', 'secretCode', 2233);
如何不这样做
此脚本将覆盖utf-8编码文件test.json的第四行。 test.json文件位于Node.js的执行目录中。
var fs = require('fs');
function replaceLineInFile(filePath, lineIndex, newLineText) {
// Read the complete file content into a tring.
var fileText = fs.readFileSync(filePath, 'utf-8');
// Get line break chars.
var lineBreakChars = '\r\n';
if (fileText.indexOf(lineBreakChars) > -1) {
lineBreakChars = '\n';
}
// Split the file content into an array of lines.
var fileLines = fileText.split(lineBreakChars);
// Overwrite a line from the array of lines.
fileLines[lineIndex] = newLineText;
// Join the line array elements into a single string again.
fileText = fileLines.join(lineBreakChars);
// Write the updte file content to the disk.
fs.writeFileSync(filePath, fileText, 'utf-8');
}
// Call the function above.
replaceLineInFile('test.json', 3, ' "secretCode": 2233');
输入/输出文件
两个脚本都可以在输入文件中使用以下行,更新数据并将更新的数据写回文件。
在脚本执行之前,test.json的内容。
{
"name": "James",
"birthday": "March 22",
"secretCode": 16309
}
执行node myscript.js
后test.json的内容,myscript.js
包含上面的代码。
{
"name": "James",
"birthday": "March 22",
"secretCode": 2233
}