yaml使用心得

  最近一段时间接触了yaml,做为一种序列化语言,yaml的可读性彷佛要比xml更容易理解,比csv要更轻量级。目前,yaml做为项目中自动化框架的一种数据配置文件,在使用过程当中受到必定的好评~下面总结一下在实际使用中的心得。框架


 

  yaml的样式:函数

  

  yaml的使用方法:this

 1 private String yamlFile;
 2 
 3 private HashMap<String, HashMap<String, String>> ml;
 4 
 5     /**
 6     * @function 构造函数
 7     */
 8     public YamlUtil() {
 9         yamlFile = "test";
10         this.getYamlFile();
11     }
12 
13     /**
14     * @function 加载yaml文件
15     */
16     @SuppressWarnings("unchecked")
17     public void getYamlFile() {
18 
19         File f = new File("test/" + yamlFile + ".yaml");
20         try {
21             ml = Yaml.loadType(new FileInputStream(f.getAbsolutePath()),HashMap.class);
22         } catch (FileNotFoundException e) {
23             e.printStackTrace();
24         }
25     }
26 
27     /**
28     * @function 获取yaml文件中对应关键字信息
29     * @param keyword
30     * @return
31     */
32     public Map<String,String> getKeyWordInfos(String keyword) {
33 
34         HashMap<String,String> map = new HashMap<String,String>();
35         map = ml.get(keyword);
36         return map;
37     }
38 }

  yaml遇到的小坑:编码

  一、注意冒号的全半角....这个很少说了啊spa

  二、key值不能为全数字code

  test.yaml:xml

33033:
  name:driver
  age:24

  这种状况下,在使用ml.get(keyword)的时候获取的结果是nullblog

  三、编码格式问题,若是使用中文请用UTF-8,不能够为UTF-8-BOM格式。get

  

  这种样式,在使用过程当中ml.get(keyword)时,一样获取的结果是null。hash

    /**
     * @function 获取yaml文件中对应关键字信息
     * @param keyword
     * @return
     */
    public Map<String,String> getKeyWordInfos(String keyword) {

        HashMap<String,String> map = new HashMap<String,String>();
        for (String key : ml.keySet()){
            System.out.println(key.charAt(0));
            if (key.equals(keyword)){
                map = ml.get(keyword);
            }
        }
        
        return map;
    } 

  在执行key.equals(keyword)时,key是father,keyword也是father可是实际运行的结果是false,进一步分析发现,key和keyword的hashcode并不相等,key.charAt(0)的值是"",当时有点蒙圈。获取key的前3个字节发现结果以下,这是UTF-8的一种表现形式。最终尝试才发现是UTF-8-BOM在做怪。。

以上是本人在使用过程当中遇到的问题,在此,再次感谢飞总和达子。

相关文章
相关标签/搜索