Scala使用SnakeYAML读取yaml文件

JerryXia 发表于 , 阅读 (24)
class MessageConfig {  @BeanProperty var name: String = _  @BeanProperty var sex: String = _}
Exception in thread "main" java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.lagou.entity.MessageConfig	at YamlTest$delayedInit$body.apply(YamlTest.scala:32)	at scala.Function0$class.apply$mcV$sp(Function0.scala:40)	at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)	at scala.App$$anonfun$main$1.apply(App.scala:71)	at scala.App$$anonfun$main$1.apply(App.scala:71)	at scala.collection.immutable.List.foreach(List.scala:318)	at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)	at scala.App$class.main(App.scala:71)	at YamlTest$.main(YamlTest.scala:15)	at YamlTest.main(YamlTest.scala)	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)	at java.lang.reflect.Method.invoke(Method.java:497)	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

读yaml字符串

  val text2 = """    name: you    sex: male              """  val yaml = new Yaml  val test = yaml.load(text2).asInstanceOf[java.util.Map[String, Any]]  println(test.get("name"))

读文件

object YamlTest extends App{  val file = "D:\\test.yml"  val input = new FileInputStream(new File(file))  val yaml = new Yaml  val test = yaml.load(input).asInstanceOf[java.util.Map[String, Any]]  println(test.get("name"))}

注意

在解析的时候如果在yaml文件中存储了true、yes这些这两种关键字,解析的结果会把它变成Boolean类型…….

不理解,即使设置了String,解析后还是Boolean。


2016-03-14 14:00:01 hzct

作者:dantezhao | 简书 | CSDN | GITHUB 文章推荐:http://dantezhao.com/readme 个人主页:http://dantezhao.com 文章可以转载, 但必须以超链接形式标明文章原始出处和作者信息