2017-08-16 15 views
0

這是yaml文件。我正在嘗試加載pojo類。但它顯示我無法爲listMap創建屬性。請幫我解決這個問題。在這個yaml文件中,我有一個包含多個鍵值對的listMap。此外,我需要的建議是否這種方法更好,或者我應該加載到地圖。如何將yml文件轉換爲java pojo

android: dfeiei 
driver: dfkejifein 
list: 
    - aabra 
    - ka 
    - dabra 
listMap: 
    key: value 
    name: paras 
    sirname: porwal 

將此yaml文件加載到pojo中的代碼。

YamlLoader yamlFile=yaml.loadAs(in, YamlLoader.class); 

這是POJO類。

import java.util.List; 
    import java.util.Map; 

    public class YamlLoader { 
    private String android; 
    private String driver; 
    private List<String>list; 
    private Map<String,String>map; 
    private List listMap; 
    public String getAndroid() { 
     return android; 
    } 
    public void setAndroid(String android) { 
     this.android = android; 
    } 
    public String getDriver() { 
     return driver; 
    } 
    public void setDriver(String driver) { 
     this.driver = driver; 
    } 
    public List<String> getList() { 
     return list; 
    } 
    public void setList(List<String> list) { 
     this.list = list; 
    } 

    @Override 
    public String toString() { 
     return "YamlLoader [android=" + android + ", driver=" + driver + ", list=" + list + ", map=" + map + ", listMap=" 
       + listMap + "]"; 
    } 
    public Map<String,String> getMap() { 
     return map; 
    } 
    public void setMap(Map<String,String> map) { 
     this.map = map; 
    } 
    public List getListMap() { 
     return listMap; 
    } 
    public void setListMap(List listMap) { 
     this.listMap = listMap; 
    } 
+0

只是因爲yaml沒有爲'listmap'提供任何東西。 刪除'private List listMap;'取決於它的東西或搜索庫,如果有一個註解用於yaml解析和忽略空變量。 – Nico

回答

0

listMapList,這就是爲什麼YAML不能從映射填充它。如果你想要一個列表,改變你的YAML是這樣的:

listMap: 
    - key: value 
    - name: paras 
    - sirname: porwal 

這會給你一個單條目映射列表。如果您想保留YAML端的映射,請將其加載到Map

如果您想更好地控制YAML實體如何映射到Java類型,請使用SnakeYaml API而不是Jackson。我從來沒有得到過爲什麼人們使用Jackson進行YAML處理,因爲它提供的定製量比SnakeYaml本身少,同時也沒有達到更高的水平。

+0

謝謝並同意。但我使用蛇yaml api,也嘗試了你提到的,但它不工作。 – paras

+0

然後描述你得到的錯誤。 – flyx

相關問題