读取文件中字段的变量,追加到json文件中。
发布于 1个月前 作者 rphj 269 次浏览 来自 问答

初学node.js,想完成这样的功能: 读取配置文件config.txt中相应的字段,追加到serverlist.json中。 1.png 2.png

我目前想用执行系统命令这样的方法取得 var serid = 'S1’; WanIp = exec(“grep -w “+serid+” config.txt |awk {’print $2’}|awk -F/ {’print $1’}”); name = exec("grep -w “+serid+” config.txt |awk ‘{print $NF}’ "); WanIp.stdout.on('data’, function (ip) { console.log(ip); });

怎么样能把这个Wanip的变量,传到json参数中去呢?

var JsonObj = JSON.parse(fs.readFileSync(‘./test.json’)); //console.log(JsonObj.appOnline[0]);

4 回复

啧啧,看来很多人都不愿意点进来。 变量请不要首字母大写,使用变量前要先 var 声明。 jsonObj 就是一个 javascript object ,把你的数据追加到 jsonObj,再 JSON.stringify 成 text ,写入到文件就完了啊。 jsonObj.appOnline.push({ WHAT EVER YOUR NEW DATA }); … var text = JSON.stringify(jsonObj);

@klesh 能不能帮忙详细写一下啊? 我怎么取到config.txt的指定列啊?像awk那样的。然后把这个值更新到json文件中去。 求帮忙~~

啧啧,那个 config.txt 格式很标准啊。列之间应该是tab分隔的吧。读进来,用正则分隔一下就行了。

var jsonObj = JSON.parse(fs.readFileSync('test.json'));
var lines = fs.readFileSync('config.txt').split(/\n/g);
lines.shift(); //把第一行去掉
lines.forEach(function(line) {
  var row = line.split(/\t+/g);
  // 在这里通过 index 去把值取出来干你想干的事。数组怎么使用知道的吧?
  jsonObj.appOnline.push({ 'id': row[0], name: row[8] .... });
}
fs.writeFileSync("test.json", JSON.stringify(jsonObj));

这基本上是完整的程序了,再看不懂雇我弄吧。

楼主为何不用csv文件格式来存储数据呢,这样解析起来就很happy,另外node里用shell命令很操蛋,能够用node完成的尽量用node

回到顶部