繁体   English   中英

从配置文件进行Yaml解析

[英]Yaml Parsing from a config file

这是我第一次使用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)

有人可以帮我调试一下吗。 我在截止日期前运行!! :(

YAML解析器似乎正在返回Map 因此,您应该像这样使用它:

Map config = (Map) yaml.load(input);
Map usersConfig = config.get("Users");

您还使用什么特定的YAML解析器?

更新1:如果您查看文档 ,则load方法将根据YAML文件的内容返回ListMap 由于您的YAML文件以键值映射( Users )而不是数组( - )开头,因此load方法将返回Map ,这是在这种情况下要返回的适当类型。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM