以编程方式将可选值写入类型安全配置对象

write optional value programmatically to Typesafe Config Object

我正在尝试创建一个带有可选值的 TypeSafe 配置,以最终将配置写入文件。

问题是当我这样做时

 val newConfig = config
.withValue("something",ConfigValueFactory.fromAnyRef("defaultvalue"))
.withValue("something", ConfigValueFactory.fromAnyRef("${?optional}"))

结果类似于:

{something: ${?optional}}

但我想要这样的东西:

{something: defaultValue, something: ${?optional}}

是否可以通过编程方式做到这一点??

withValue 的问题是最后一次调用只会 return 一个只有新值的新对象。您可以使用 withFallback,但它会遇到同样的问题,因为在构造对象时正在解析该值。

我玩了一会儿,但似乎 Typesafe Config API 是根据已解析的对象模型而不是 HOCON AST 表示的,这使您的用例不受支持。我建议您在他们的 GitHub 存储库中打开一个功能请求:https://github.com/lightbend/config/issues