2015-06-15 236 views
0

我对scala很新颖。我试图用scala中的snakeyaml解析Yaml文件。我正在获取数据,但它是以对象的形式出现的。我可以转换对象的字符串,但它使用Yaml的整个目的失败。Scala:使用SnakeYaml解析Yaml文件

例如我使用的文件是“abcd.yaml”数据

aa: 
    - x 
    - y 
bb: z 

我的代码是这样的:

import java.io.{File, FileInputStream} 
import org.yaml.snakeyaml.Yaml 

def parseYaml(){ 
val ios = new FileInputStream(new File("abcd.yaml")) 
val yaml = new Yaml() 
val obj = yaml.load(ios) 
} 

但在这里,我得到一个对象,我不能用里面的值。 任何解决方案?

+0

根据你将不得不投以获得任何有意义出返回文档的文档。尝试将其转换为一个'Map [String,Any]',看看它是否有效 – cmbaxter

+0

嗨,我已经尝试过了,但我总是得到这样的错误(我用asInstanceOf [Map [String,Any]): “main”java.lang.ClassCastException:java.util.LinkedHashMap不能转换为scala.collection.immutable.Map – rrawat

回答

2

我得到了解决,这是投java的映射,而不是斯卡拉地图:

只要使用asInstanceOf[java.util.Map[String, Any]和它的作品就像一个魅力。 的解决方法是调用加载这样的:

obj = yaml.load(ios).asInstanceOf[java.util.Map[String, Any]