- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以使 pureconfig 读取属性为 Map[String, String]
?我有以下内容
application.conf
:
cfg{
some.property.name: "value"
some.another.property.name: "another value"
}
这是我尝试读取配置的应用程序:
import pureconfig.generic.auto._
import pureconfig.ConfigSource
import pureconfig.error.ConfigReaderException
object Model extends App {
case class Config(cfg: Map[String, String])
val result = ConfigSource.default
.load[Config]
.left
.map(err => new ConfigReaderException[Config](err))
.toTry
val config = result.get
println(config)
}
问题是它抛出以下异常:
Exception in thread "main" pureconfig.error.ConfigReaderException: Cannot convert configuration to a Model$Config. Failures are:
at 'cfg.some':
- (application.conf @ file:/home/somename/prcfg/target/classes/application.conf: 2-3) Expected type STRING. Found OBJECT instead.
at Model$.$anonfun$result$2(Model.scala:11)
at scala.util.Either$LeftProjection.map(Either.scala:614)
at Model$.delayedEndpoint$Model$1(Model.scala:11)
at Model$delayedInit$body.apply(Model.scala:5)
at scala.Function0.apply$mcV$sp(Function0.scala:39)
at scala.Function0.apply$mcV$sp$(Function0.scala:39)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:17)
at scala.App.$anonfun$main$1(App.scala:73)
at scala.App.$anonfun$main$1$adapted(App.scala:73)
at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:553)
at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:551)
at scala.collection.AbstractIterable.foreach(Iterable.scala:920)
at scala.App.main(App.scala:73)
at scala.App.main$(App.scala:71)
at Model$.main(Model.scala:5)
at Model.main(Model.scala)
有办法解决吗?我预计 Map[String, String]
将包含以下映射:
some.property.name -> "value"
some.another.property.name -> "another value"
最佳答案
您的问题不是 pureconfig。你的问题是,根据 HOCON 规范,你写了什么:
cfg {
some.property.name: "value"
some.another.property.name: "another value"
}
是语法糖:
cfg {
some {
property {
name = "value"
}
}
another {
property {
name = "another value"
}
}
}
是 TypeSafe Config/Lightbend Config 决定你的 cfg
有两个属性,而且它们都是嵌套配置。 Pureconfig 只接受这些嵌套的配置并将它们映射到案例类中。但它无法映射结构与预期完全不同的东西。
如果你写:
cfg {
some-property-name: "value"
some-another-property-name: "another value"
}
您将能够将 "cfg"
路径解码为 Map[String, String]
并将顶级配置解码为 case class Config(cfg: Map [字符串,字符串])
。如果您想将 .
视为 key 的一部分而不是嵌套......那么恐怕您必须自己编写一个 ConfigReader
因为这是非标准用法.
关于scala - Pureconfig 将配置读取为属性映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64395800/
0.10.*pureconfig 的最新更新系列默认禁用自动配置。 import pureconfig.generic.auto._ 需要手动导入。 但是我有一个类层次结构,我不想每次都为子类导入它。
是否可以使 pureconfig 读取属性为 Map[String, String]?我有以下内容 application.conf: cfg{ some.property.name: "valu
我在 scala 中寻找一些适合 akka 的实用程序,可以映射 HOCON到 Scala 类/对象。 (类似于 Spring 中的 @Configuration 将 .yml 或 .properti
我的资源中有一个简单的 config.json 文件: { "configs": [ { "someConfig": { "name": "my_name",
我有这样的 HOCON 配置: [ { name = 1 url = "http://example.com" }, { nam
我正在尝试使用 pureConfig 和 configFactory 进行我的 Spark 应用程序配置。这是我的代码: import pureconfig.{loadConfigOrThrow} o
我有以下配置文件: connection.port = 8080 connection.interface = "127.0.0.1" 我在阅读此文件时尝试使用精炼和精炼的纯配置。我有以下类(clas
我正在尝试从配置文件加载 Map[String, Any]。目前是这样写的 map-name { stringValue = "firstValue" intValue = 1 bo
我是一名优秀的程序员,十分优秀!