为什么我的简单Scala文件使用snakeyaml无法将映射作为YAML转储到文件?

时间:2019-01-22 01:25:49

标签: scala yaml snakeyaml

我有这个简单的scala文件,使用snakeyaml:

object Main extends App {
var a=Map[String,Object]()
a+=("a"->"b")
println(a("a"))

val yaml=new Yaml()
val fileWriter = new FileWriter("d:\\src\\scala\\yaml.txt")
yaml.dump(a,fileWriter)}

我只在yaml.txt中得到了这个

!!scala.collection.immutable.Map$Map1 {}

为什么不是{a: b}

1 个答案:

答案 0 :(得分:2)

我怀疑发生这种情况是因为SnakeYAML是Java库,并且它不了解Scala特定的集合。因此,要使用该库转储Scala-Map,应首先将其转换为Java-Map。这样的代码可能会有所帮助:

import scala.collection.JavaConverters._

...

yaml.dump(a.asJava,fileWriter)

如果您要转储很多不同的Scala集合,则可以考虑为它们实现自定义Representers and Constructors