在typesafe配置中使用withFallBack合并配置中的数组值

我有一些可用的数据作为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"]
  },"k3":{
    "values": ["z1"]
  }
}

即fallBack配置中“ k1”的数组值将被忽略。合并后是否有办法从两个文件中获取串联数组?

orgjava 回答:在typesafe配置中使用withFallBack合并配置中的数组值

为此,您需要为值串联(values: ${data.k1.values} ["v9"])添加ref:

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"]}}}))

配置:

defaultConfig

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

additionalConfig:

data: {
  k1: {
    values: ${data.k1.values} ["v9"]
  }
}
本文链接:https://www.f2er.com/2632021.html

大家都在问