前不久在《程序员》上看到了关于Yaml的介绍。
据说是现在Ruby下用的很火的配置文件。
在其官方站点有其对文件格式的一些简单介绍。
在sourceforge上也有两个开源的yaml配置文件的解析包JYaml和Yaml4J
另外在dev.java.net上有另一个解析包Jvyaml,由于找不到文档就没有进一步的研究。
公司的最近的一个项目需要从配置文件中读取结构化的数据,需要一个POJO类的反序列化。
于是迫不及待的想体验新技术,
虽然我不是第一个吃螃蟹的,但还是付出了不少的代价。
Yaml4J比较弱一点,只提供了Loader/Dumper方法。
相比之下,JYaml的提供的序列化和反序列化的方法多多了,
而且不但支持List和Map这两种yaml中主要的数据结构,
还支持Date,String,Double,BigInteger 和BigDecimal,
特别是它支持javabean的反序列化。
于是我在eclipse下写了一个官方提供的例子。简单的测试,一切运行正常。
下面是我项目中的例子:
下面是测试代码:
测试结果:
JYaml在解析多层嵌套的数据结构的时候有问题,
具体来说,在层次结构较深时Array只能解析出第一元素,即[0]。
但这个在解析时并不会抛出错误。
这个问题至今没有解决。
我使用的JYaml版本是jyaml-lib-14-1.0-beta-3.jar
不知道是我的配置文件写得有问题,还是beta般的bug。
另外在中文支持方面也有所欠缺,直接读取utf-8格式的中文会出现乱码,需要自己转码:
this.fieldDisplay = new String(fieldDisplay.getBytes(), “utf-8”);
当然你也可以帮你的yml文件的格式改为iso-8859-1不过在这种编码状态下你的中文是乱码。
希望今后的版本能有所改进。