为什么我使用 snakeyaml 的简单 scala 文件无法将地图作为 YAML 转储到文件中?
Why my simple scala file use snakeyaml can't dump a map as YAML to a file?
我有这个简单的 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}
?
我怀疑发生这种情况是因为 SnakeYAML 是一个 Java 库,它不知道特定于 Scala 的集合。因此,要将 Scala-Map
转储到库中,您应该先将其转换为 Java-Map
。像这样的代码可能会有所帮助:
import scala.collection.JavaConverters._
...
yaml.dump(a.asJava,fileWriter)
如果您想转储很多不同的 Scala 集合,您可以考虑为它们实现自定义 Representers and Constructors。
我有这个简单的 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}
?
我怀疑发生这种情况是因为 SnakeYAML 是一个 Java 库,它不知道特定于 Scala 的集合。因此,要将 Scala-Map
转储到库中,您应该先将其转换为 Java-Map
。像这样的代码可能会有所帮助:
import scala.collection.JavaConverters._
...
yaml.dump(a.asJava,fileWriter)
如果您想转储很多不同的 Scala 集合,您可以考虑为它们实现自定义 Representers and Constructors。