簡體   English   中英

在類型安全配置中使用 withFallBack 合並配置中的數組值

[英]Merge array values in configuration using withFallBack in typesafe config

我有一些數據可用作 HOCON 格式的類型安全配置文件。

有一個像這樣的基本文件:

"data":{
  "k1":{
    "values": ["v1", "v2"]
  },
  "k2":{
    "values": ["x1"]
  },
  "k3":{
    "values": ["z1"]
  }
}

可能有一個文件可用於進行一些更改,例如在測試期間,如下所示:

"data":{
  "k1":{
    "values": ["v9"]
  }
}

我正在嘗試使用合並這兩個文件

fileConfig.withFallback(baseFileConfig)

最終結果是:

"data":{
  "k1":{
    "values": ["v9"]  // desired ["v1","v2","v9"]
  },
  "k2":{
    "values": ["x1"]
  },
  "k3":{
    "values": ["z1"]
  }
}

即,后備配置中“k1”的數組值將被忽略。 有沒有辦法在合並后從兩個文件中獲取連接的數組?

為此,您需要為值連接添加 ref ( values: ${data.k1.values} ["v9"] ):

lazy val defaultConfig     = ConfigFactory.parseResources("a.conf")
lazy val additionalConfig = ConfigFactory.parseResources("b.conf" )
println(additionalConfig.withFallback(defaultConfig).resolve()) 
// Config(SimpleConfigObject({"data":{"k1":{"values":["v1","v2","v9"]},"k2":{"values":["x1"]},"k3":{"values":["z1"]}}}))

配置:

默認配置

data: {
  k1: {
    values: ["v1", "v2"]
  },
  k2: {
    "values": [
      "x1"
    ]
  },
  k3: {
    "values": [
      "z1"
    ]
  }
}

附加配置:

data: {
  k1: {
    values: ${data.k1.values} ["v9"]
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM