我正在解析这个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将其保存为您在上面看到的所需格式?
答案 0 :(得分:5)
默认情况下,SnakeYAML使用DumperOptions.FlowStyle.FLOW
,但可以将其更改为DumperOptions.FlowStyle.BLOCK
,它将以所需格式转储数据。
Kotlin的一个例子:
val options = DumperOptions()
options.indent = 2
options.defaultFlowStyle = DumperOptions.FlowStyle.BLOCK
Yaml(options).dump(yourObject)
答案 1 :(得分:1)
如何手动处理缩进和key: value
格式:
view.map{ case (k,v) => s"\t$k: $v\n" }
对于嵌套地图,您需要一个
的方法level
选项卡放在输出前面以提供正确的输出嵌套