2016-09-15 70 views
1

在類型安全配置的例子要求你知道一個路徑來指定字面上,例如:如何從java類型安全配置中檢索嵌套值?

config1.getString("complex-app.something") 

我需要能夠解析與自由形式的標籤一個配置文件的地方。我該如何處理。

說,我有HOCON這樣的:

root : { 
    a : { x: 1, y: 2 }, 
    b : { x: 2, z: 3 } 
} 

不知道什麼鍵都在該文件中,我怎麼能找到有鑰匙「a」和「b」和該對象的值鍵'a'有'x'和'y'鍵,'b'鍵有'x'和'z'鍵?

這裏是不是做這件事:

Config config = ConfigFactory.load("configula"); 
Config root = config.getObject("root").toConfig(); 
for (Entry<String, ConfigValue> e: root.entrySet()) { 
    // The key is a.x, a.y etc. ??!? 
    // The value is not a map-like thing 
} 

隨着條目集的是一個路徑的鑰匙,我要解析路徑查找鍵是,這是非常接近製作使用StringTokenizer等簡單地解析文本文件更容易。

什麼是解析嵌套對象的配置方式?例如,Groovy和ConfigSlurper相似的結構:

root { 
    a { 
    x = 1 
    y = 2 
    } 
    b { 
    x = 2 
    z = 3 
    } 
} 

會被解析如下:

cfg = new ConfigSlurper().parse(new File('configula.config')) 
cfg.root.each { k, r -> 
    r.each { kk, v -> 
    println "${k}, ${kk} -> ${v}" 
    } 
} 

的事情我已經想盡組合的價值是一個ConfigValue結束。有沒有辦法獲得映射到自身包含映射到對象的鍵的對象的鍵樹?

回答

0

回答我自己的問題:ConfigObject延伸java.util.Map所以,當一個鍵可以是任意值時導航的一種方式是使用ConfigObject.keySet()