这是我第一次使用YAML解析器而且我目前处于困境
我有一个类似
的配置文件Users
-Name:A
Id : x
Addr:10.0.0.1
-Name:B
Id :y
Addr:10.0.0.2
HomeAddress
City:bla bla
Country:bla bla
Office Address
City:abchd
Country:bha bha ba
所以我认为解析它的最好方法就是有一个这样的列表。
List<Map<String, obj>> Object = (List<Map<String, obj>>) yaml.load(input);
目标是通过指定字符串来访问该对象。就像用户名A一样,我可以获得他的id和IPAddr(这对我来说是最重要的)。但是当我尝试这个声明时,我得到了一个像这样的错误
Exception in thread "main" java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.util.List
at Message.MessagePasser.<init>(MessagePasser.java:34)
有人可以帮我调试一下。我在截止日期前跑了!! :(
答案 0 :(得分:3)
YAML解析器似乎返回Map
。所以你应该像这样使用它:
Map config = (Map) yaml.load(input);
Map usersConfig = config.get("Users");
您使用的是什么特定的YAML解析器?
更新1:如果查看documentation,load
方法会返回List
或Map
,具体取决于你的YAML文件。由于您的YAML文件以键值映射(Users
)而非数组(-
)开头,因此load
方法返回Map
,这是适当的类型在这种情况下归还。
答案 1 :(得分:1)
1)在此处检查您的YAML的有效性:http://instantyaml.appspot.com/
2)你的文件应如下所示:(注意空格!)
Users :
- Name : A
Id : x
Addr : 10.0.0.1
- Name : B
Id : y
Addr : 10.0.0.2