如何使用SnakeYAML转储嵌套列表
我正在解析这个yaml文件
View: from : 01.01.2007 to : 04.01.2007 driver : sun.jdbc.odbc.JdbcOdbcDriver
在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
我像这样转储它:
val fileWriter = new FileWriter(System.getProperty("user.home") + "\\Desktop\\test.yml") new Yaml().dump(Map[String, Any]("View" -> view.asJava).asJava, fileWriter)
这样可以保存新的yaml文件:
View: {driver: sun.jdbc.odbc.JdbcOdbcDriver, from: neu, to: 04.01.2007}
但是我想要这样保存它:
View: driver: sun.jdbc.odbc.JdbcOdbcDriver from: neu to: 04.01.2007
我如何告诉SnakeYAML将其保存为您所需的格式?
如何手动处理缩进和key: value
格式化:
view.map{ case (k,v) => s"\t$k: $v\n" }
在嵌套地图的情况下,你会想要一个方法
- 接受当前嵌套的“级别”。 将
level
标签放置在输出前面以提供正确的输出嵌套 - 检查每个条目。 如果它是另一种集合类型,则需要递归地调用它自己 – 这将增加缩进级别
默认情况下,SnakeYAML使用DumperOptions.FlowStyle.FLOW
但可以将其更改为DumperOptions.FlowStyle.BLOCK
,它将以所需的格式转储数据。
Kotlin的一个例子是:
val options = DumperOptions() options.indent = 2 options.defaultFlowStyle = DumperOptions.FlowStyle.BLOCK Yaml(options).dump(yourObject)