yaml使用心得


  最近一段時間接觸了yaml,作為一種序列化語言,yaml的可讀性似乎要比xml更容易理解,比csv要更輕量級。目前,yaml作為項目中自動化框架的一種數據配置文件,在使用過程中受到一定的好評~下面總結一下在實際使用中的心得。


 

  yaml的樣式:

  

  yaml的使用方法:

 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遇到的小坑:

  1、注意冒號的全半角....這個不多說了啊

  2、key值不能為全數字

  test.yaml:

33033:
  name:driver
  age:24

  這種情況下,在使用ml.get(keyword)的時候獲取的結果是null

  3、編碼格式問題,如果使用中文請用UTF-8,不可以為UTF-8-BOM格式。

  

  這種樣式,在使用過程中ml.get(keyword)時,同樣獲取的結果是null。

    /**
     * @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在作怪。。

以上是本人在使用過程中遇到的問題,在此,再次感謝飛總和達子。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM