初学node.js,想完成这样的功能: 读取配置文件config.txt中相应的字段,追加到serverlist.json中。
我目前想用执行系统命令这样的方法取得 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]);
啧啧,看来很多人都不愿意点进来。 变量请不要首字母大写,使用变量前要先 var 声明。 jsonObj 就是一个 javascript object ,把你的数据追加到 jsonObj,再 JSON.stringify 成 text ,写入到文件就完了啊。 jsonObj.appOnline.push({ WHAT EVER YOUR NEW DATA }); … var text = JSON.stringify(jsonObj);
啧啧,那个 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));
这基本上是完整的程序了,再看不懂雇我弄吧。