根据Dart-Yaml酒吧套餐的readme,我应该能够做到以下几点:
var db = loadYamlDocument("db.yaml");
print(db['hostname']);
给了我在yaml中为端口指定的值,但是我被告知YamlDocument没有实例方法[]
。好吧,我猜这个对象没有地图行为,这是我原本期望的。通过文档查看,提到了YamlMap,但我根本没有看到如何实现它。
如果我只是尝试print(db);
,我实际上会收到字符串:'db.yaml'
。
所以我尝试使用new File('db.yaml');
然后将该变量发送到loadYamlDocument
方法,但这也不起作用。
有没有人有幸在阅读yaml文档并在Dart中获取地图?
答案 0 :(得分:3)
检查documentation pages for the Yaml package。
loadYamlDocument()
会返回YamlDocument
,这是一个重量级的'使您可以访问Yaml文档的所有功能的类。
您可能希望使用loadYaml
,在大多数情况下会返回Map
。描述说地图的实际实现是YamlMap
(Yaml包的Map
实现,他们可能需要使用而不是HashMap
来实现技术原因)。
答案 1 :(得分:3)
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"));
}