scala 在HOCON中用环境变量替换键

y0u0uwnf  于 2023-10-18  发布在  Scala
关注(0)|答案(1)|浏览(110)

我使用pureconfig读取Scala应用程序的配置。application.conf文件是HOCON格式。我的配置文件看起来像这样

weathers {
    ${?HUMID_WEATHER_ID} {
      temperature = 10
      temperature = ${?HUMID_WEATHER_TEMPERATURR}
    }
    ${?HOT_WEATHER_ID} {
      temperature = 10
      temperature = ${?HOT_WEATHER_TEMPERATURR}
    }
}

weathers是一个Map,其键应该由环境变量HUMID_WEATHER_IDHOT_WEATHER_ID替换。但是当我读取配置时,

135) Unable to parse the configuration: expecting a close parentheses ')' here, not: '${'HUMID_WEATHER_ID'}'.

替换在值中工作正常,但在键中不工作。这是故意的吗有办法解决这个问题吗?

7ivaypg9

7ivaypg91#

我是否可以建议使用静态名称,如hothumid,而不是使用ID作为键?每个元素都有一个id字段可以替换。

weathers {
    humid {
      id = ${?HUMID_WEATHER_ID} {
      temperature = 10
      temperature = ${?HUMID_WEATHER_TEMPERATURR}
    }
    hot {
      id = ${?HOT_WEATHER_ID}
      temperature = 10
      temperature = ${?HOT_WEATHER_TEMPERATURR}
    }
}

然后更改代码,对名称而不是数字字符串进行插值

val weather = "humid"
val id = config.get(s"weathers.$weather.id")

相关问题