Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有一种方法可以使用Node更新外部JSON文件中特定JSON键的值,而不必解析和字符串化整个文件?_Javascript_Node.js_Json - Fatal编程技术网

Javascript 是否有一种方法可以使用Node更新外部JSON文件中特定JSON键的值,而不必解析和字符串化整个文件?

Javascript 是否有一种方法可以使用Node更新外部JSON文件中特定JSON键的值,而不必解析和字符串化整个文件?,javascript,node.js,json,Javascript,Node.js,Json,我知道JSON.parse()和JSON.stringify()。我知道我可以使用Node的fs将“新”JSON数据写回文件 但是,如果我只需要为一个特定的键替换1个值,那么我觉得每次都不需要parse()整个JSON文件 总之,我的JS将创造一个新的价值。然后,该值应该写回JSON文件,但是,我希望能够更新内部的1个特定键的值,以parse,然后stringify每次仅为1个值对整个JSON文件进行字符串化,使用带有正则表达式的sed进行替换显然已经足够了。 尽管您仍然可以使用NodeJS和r

我知道
JSON.parse()
JSON.stringify()
。我知道我可以使用Node的
fs
将“新”JSON数据写回文件

但是,如果我只需要为一个特定的键替换1个值,那么我觉得每次都不需要
parse()
整个JSON文件


总之,我的JS将创造一个新的价值。然后,该值应该写回JSON文件,但是,我希望能够更新内部的1个特定键的值,以
parse
,然后
stringify
每次仅为1个值对整个JSON文件进行字符串化,使用带有正则表达式的
sed
进行替换显然已经足够了。 尽管您仍然可以使用NodeJS和regex,使用
String.prototype.replace

使用
sed

sed -i 's/\"key\":.*/\"key\": '${newValue}'/g' "/path/to/my.json"
使用NodeJS

let file = fs.readFileSync('./a.json').toString();
file = file.replace(/\"key\":.*/g, '"key": "newValue"');
fs.writeFileSync('./a.json', file);

如果文件没有显著的大小,就不必选择这种类型的解决方案,只要
parse
stringify
返回到文件

,除非文件非常大,否则解析和重新stringify它将比其他任何方法更简单、更安全。如果您确实有非常大的文件,并且这会成为一个性能问题,那么您首先需要考虑将数据存储在不同的文件中,其次可能需要查看stream parsers.Yikes。根据上面的评论,这似乎比“解析和字符串化”更复杂。@CodeFinity是的,我同意,但这正是作者想要的哈哈!