【问题标题】:Merge array values in configuration using withFallBack in typesafe config在类型安全配置中使用 withFallBack 合并配置中的数组值
【发布时间】:2020-03-17 13:38:48
【问题描述】:

我有一些数据可用作 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”的数组值将被忽略。有没有办法可以在合并后从两个文件中获取串联数组?

【问题讨论】:

    标签: scala typesafe-config hocon


    【解决方案1】:

    为此,您需要为值连接添加 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"]
      }
    }
    

    【讨论】:

    猜你喜欢
    • 2017-07-31
    • 2014-04-27
    • 2017-03-06
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多