⛳
DartのYamlをMap<String, String>やList<String>に変換する方法
環境
以下のライブラリを使う。(普通これだよね)
Mapの場合
ライブラリでMapをパースするとMap
型ではなくdynamic
型が返ってくる。
実態はYamlMap
型。
YamlMap型から値を取り出しても値の方が推論されず、使いにくい。
Yamlの構造が複雑な時は仕方ないが、Map<String, String>
で十分な時は、Map型に変換したい。
.map
で変換できる。
import 'package:yaml/yaml.dart';
final yamlData = loadYaml("""
abc: abc
"""
) as YamlMap;
/// (key, value)を引数にとる。MapEntryを返す。
final map = yamlData.map((key, value) => MapEntry<String, String>(key, value));
Listの場合
ライブラリでListをパースするとList
型ではなくdynamic
型が返ってくる。
実態はYamlList
型。
以下のコードでList<String>
に変換できる
import 'package:yaml/yaml.dart';
final result = loadYaml("""
- a
- b
""") as YamlList;
final list = result.toList().cast<String>();
ググっても出でこなかった
Discussion