【发布时间】:2020-03-05 03:49:01
【问题描述】:
我正在尝试解析 YAML 文件。我能够正确解析文件,但 YAML 文件中的 cmets 没有被读取。有什么办法吗?附加解析器代码和 config.json。还附上文件的截图和输出以供参考。
var fs= require('fs');
var path= require('path');
var yaml = require('js-yaml')
var fname= "config.json"
var jPath= path.join(__dirname,"..","ConfigGen","Config",fname);
var jsString= fs.readFileSync(jPath, 'utf8')
// Get path for files from Config file
var tType= "cto" //Get this from input
var pth= JSON.parse(jsString)[tType] //perform error handling
var cType = "jbod" //Get this from input
//Use that path
fs.readdir(pth, function(err,files) {
files.forEach(function(file){
fName= cType+"_"+tType+"_uut.yaml-example";
if(file==fName){
var flContent= fs.readFileSync(path.join(pth,file),"utf8")
// return path.join from here and use the next part in a separate function
var data= yaml.safeLoad(flContent)[0][0]
console.log(data)
for (var index in data){
var prefix = index
for (idx in data[index]){
//console.log(prefix, idx ,data[prefix][idx])
}
}
}
})
})
【问题讨论】:
-
YAML 规范 says:„注释是一种表示细节,不得用于传达内容信息。“ 因此,大多数 YAML 实现(除了 ruamel ) 在解析器级别丢弃 cmets,因为如果不能使用它们的内容,为什么还要加载它们?
-
我的问题是我想摄取一个文件,更新一个值,然后输出文件,与原始文件的唯一变化是更改后的值。是的,yaml 规范可能会说 cmets 可以被丢弃,但该文件也会被人类读取,他们不会喜欢丢失 cmets。
标签: javascript node.js yaml