将txt转换为字符串不起作用

时间:2015-08-11 12:56:02

标签: javascript json node.js string

我的节点应用程序和内部文件夹我已经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,但这不起作用

我的问题是:

  1. 我应该把它解析为json吗?为了修改一些属性值 比如
  2. 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}]'
    

    等等...

    1. 还有其他更好的方法吗?
    2. 这就是我试过的

      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;
          }
      

1 个答案:

答案 0 :(得分:0)

您可以将字符串转换为对象,此时您可以决定如何处理/整理数据:

var obj = {};
str.split(/\n/g).forEach(function (el) {
  var spl = el.split('=');
  obj[spl[0]] = spl[1];
});

DEMO

因此,您应该留下一个名为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("'", "");