如何使用SnakeYAML转储嵌套列表

LPr*_*Prc 1 yaml scala

我正在解析这个yaml文件

View:
  from : 01.01.2007
  to : 04.01.2007
  driver : sun.jdbc.odbc.JdbcOdbcDriver
Run Code Online (Sandbox Code Playgroud)

在Scala中使用SnakeYAML,如下所示:

val stream = getClass.getResourceAsStream("/config_view.yml")
var configMap: Map[String, Any] = new Yaml().load(stream).asInstanceOf[java.util.Map[String, Any]].asScala
var view = configMap("View").asInstanceOf[java.util.LinkedHashMap[String, String]].asScala

view = view + ("from" -> "neu") // some test modifying
Run Code Online (Sandbox Code Playgroud)

我像这样转储它:

val fileWriter = new FileWriter(System.getProperty("user.home") + "\\Desktop\\test.yml")
new Yaml().dump(Map[String, Any]("View" -> view.asJava).asJava, fileWriter)
Run Code Online (Sandbox Code Playgroud)

这样可以保存新的yaml文件:

View: {driver: sun.jdbc.odbc.JdbcOdbcDriver, from: neu, to: 04.01.2007}
Run Code Online (Sandbox Code Playgroud)

但我希望它像这样保存:

View:
  driver: sun.jdbc.odbc.JdbcOdbcDriver
  from: neu
  to: 04.01.2007
Run Code Online (Sandbox Code Playgroud)

如何告诉SnakeYAML将其保存为您在上面看到的所需格式?

Rid*_*dim 5

默认情况下,SnakeYAML使用DumperOptions.FlowStyle.FLOW但可以将其更改为DumperOptions.FlowStyle.BLOCK将以所需格式转储数据.

Kotlin的一个例子:

val options = DumperOptions()
options.indent = 2
options.defaultFlowStyle = DumperOptions.FlowStyle.BLOCK
Yaml(options).dump(yourObject)
Run Code Online (Sandbox Code Playgroud)