Scala,PureConfig-如何读取json配置文件?

Scala,PureConfig-如何读取json配置文件?,scala,scala-cats,circe,pureconfig,Scala,Scala Cats,Circe,Pureconfig,我的参考资料中有一个简单的config.json文件: { "configs": [ { "someConfig": { "name": "my_name", "filters": { "name": "new" }, "id":

我的参考资料中有一个简单的
config.json
文件:

{
  "configs": [
    {
      "someConfig": {
        "name": "my_name",
        "filters": {
          "name": "new"
        },
        "id": "some-config-id",
        "fixes": {
          "isFixed": true
        }
      }
    }
  ]
}
我还为给定字段创建了
案例类

final case class Configs(configs: List[SomeConfig])

  final case class SomeConfig(name: String,
                              filters: Filters,
                              id: String,
                              fixes: Fixes)

  final case class Filters(name: String)

  final case class Fixes(isFixed: Boolean)
现在我想用
PureConfig
读取这个配置文件:

val configs: Configs = ConfigSource.resources("configs.json").loadOrThrow[Configs]
但我有错误:

Exception in thread "main" pureconfig.error.ConfigReaderException: Cannot convert configuration to Configs. Failures are:
- Key not found: 'name'.
- Key not found: 'filters'.
- Key not found: 'id'.
- Key not found: 'fixes'
我还添加了
ProductHint

 implicit def hint[A] = ProductHint[A](ConfigFieldMapping(CamelCase, CamelCase))
但这没有帮助。
如何修复它以从
json
文件读取配置?

您的案例类与json不匹配。它应该更像:

{
  "configs": [
    {
      "name": "my_name",
      "filters": {
        "name": "new"
      },
      "id": "some-config-id",
      "fixes": {
        "isFixed": true
      }
    }     
  ]
}
请注意,缺少
“someConfig”:{…}
作为配置对象的包装。或者,您应该:

final case class Configs(configs: List[SomeConfigWrapper])

final case class SomeConfigWrapper(someConfig: SomeConfig)

...
因为在JSON中,您没有
名称
过滤器
id
修复
紧挨着
“configs”
对象