根据 Dart-Yaml pub 包的自述文件,我应该能够执行以下操作:
var db = loadYamlDocument("db.yaml");
print(db['hostname']);
给了我在该yaml中为端口指定的值,但是我被告知YamlDocument没有实例方法[]
。 好的,我想该对象没有映射行为,这是我期望它具有的东西。 浏览文档,提到了YamlMap,但我根本不知道如何实现它。
如果我只是尝试print(db);
我实际上得到了字符串:'db.yaml'
.
所以我尝试使用 new File('db.yaml');
然后将该变量发送到 loadYamlDocument
方法中,但这也不起作用。
没有人有运气阅读yaml文档并在Dart中获取地图?
import "dart:io";
import "package:yaml/yaml.dart";
main() {
File file = new File('pubspec.yaml');
String yamlString = file.readAsStringSync();
Map yaml = loadYaml(yamlString);
}
编辑:
Map loadYamlFileSync(String path) {
File file = new File(path);
if (file?.existsSync() == true) {
return loadYaml(file.readAsStringSync());
}
return null;
}
Future<Map> loadYamlFile(String path) async{
File file = new File(path);
if ((await file?.exists()) == true) {
String content = await file.readAsString();
return loadYaml(content);
}
return null;
}
main(List<String> args){
print(loadYamlFileSync("pubspec.yaml"));
}
查看 Yaml 包的文档页面。
loadYamlDocument()
返回一个YamlDocument
,这是一个"重量级"类,可让您访问 Yaml 文档的所有功能。
您可能想使用 loadYaml
,在大多数情况下,它将返回一个Map
。描述说映射的实际实现是一个YamlMap
(Yaml 包的Map
实现,由于某种技术原因,他们可能需要使用它而不是HashMap
(。