无法弄清楚如何在Dart中加载yaml文档



根据 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(。

最新更新