我的节点应用程序和内部文件夹我已经txt文件(长...),内容如下
BASH=/bin/sh
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=([0]="0")
BASH_VERSINFO=([0]="3" [1]="2" [2]="51" [3]="1" [4]="release" )
BASH_VERSION='3.2.2(1)-release'
CF_INSTANCE_ADDR=10.2.7:501
CF_INSTANCE_INDEX=0
CF_INSTANCE_IP=10.97.27.7
CF_INSTANCE_P='[{external:500,internal:501}]'
COLUMNS=80
我用fs.readFile
读取了txt文件内容,我需要在那里更新一些属性,所以我想将它解析为json,但这不起作用
我的问题是:
这
CF_INSTANCE_ADDR=10.2.7:501
到
CF_INSTANCE_ADDR=11.3.8:702
或者
CF_INSTANCE_P='[{external:500,internal:501}]'
到
CF_INSTANCE_P='[{external:100,internal:200}]'
等等...
这就是我试过的
fs.readFile(filePath, 'utf8').then(function (response) {
var aa = JSON.stringify(response);
//console.log(aa);
var bb = JSON.parse(aa);
console.log(bb);
return response;
}
答案 0 :(得分:0)
您可以将字符串转换为对象,此时您可以决定如何处理/整理数据:
var obj = {};
str.split(/\n/g).forEach(function (el) {
var spl = el.split('=');
obj[spl[0]] = spl[1];
});
因此,您应该留下一个名为obj
的对象:
var obj = {
"BASH": "/bin/sh",
"BASH_ARGC": "()",
"BASH_ARGV": "()",
"BASH_LINENO": "([0]",
"BASH_VERSINFO": "([0]",
"BASH_VERSION": "'3.2.2(1)-release'",
"CF_INSTANCE_ADDR": "10.2.7:501",
"CF_INSTANCE_INDEX": "0",
"CF_INSTANCE_IP": "10.97.27.7",
"CF_INSTANCE_P": "'[{external:500,internal:501}]'",
"COLUMNS": "80"
}
您现在可以使用点或括号表示法访问每个键的值:
obj.BASH_VERSION // '3.2.2(1)-release'
obj['BASH_VERSION'] // '3.2.2(1)-release'
在这里,我将从BASH_VERSION中删除那些单引号:
obj.BASH_VERSION = obj.BASH_VERSION.replace("'", "");