标签: hocon

在Kotlin阅读和处理HOCON

我想从HOCON(Typesafe配置)文件中读取以下配置到Kotlin.

tablename: {  
  columns: [
    { item: { type: integer, key: true, null: false } }
    { desc: { type: varchar, length: 64 } }
    { quantity: { type: integer, null: false } }
    { price: { type: decimal, precision: 14, scale: 3 } }
  ]
}
Run Code Online (Sandbox Code Playgroud)

实际上我想提取关键列.到目前为止,我已尝试过以下内容.

val metadata = ConfigFactory.parseFile(metafile)
val keys = metadata.getObjectList("${tablename.toLowerCase()}.columns")
                   .filter { it.unwrapped().values.first().get("key") == true }
Run Code Online (Sandbox Code Playgroud)

但它失败并出现以下错误.

Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
@kotlin.internal.InlineOnly public operator …
Run Code Online (Sandbox Code Playgroud)

kotlin typesafe-config hocon

5
推荐指数
1
解决办法
798
查看次数

在Play框架配置(hocon)中,如何使用环境变量或默认值?

application.conf,如何使用环境变量来设置值,如果所述环境变量为空,则使用默认值?

scala playframework hocon

3
推荐指数
1
解决办法
421
查看次数

将 HOCON 字符串转换为 Java 对象

我的 Web 服务之一返回 Java 字符串下方:

[
  {
    id=5d93532e77490b00013d8862, 
    app=null,
    manufacturer=pearsonEducation, 
    bookUid=bookIsbn, 
    model=2019,
    firmware=[1.0], 
    bookName=devotional, 
    accountLinking=mandatory
  }
]
Run Code Online (Sandbox Code Playgroud)

我有上述字符串的等效 Java 对象。我想将上述 java 字符串类型转换或转换为 Java 对象。

我无法对它进行类型转换,因为它是一个字符串,而不是一个对象。所以,我试图将 Java 字符串转换为 JSON 字符串,然后我可以将该字符串写入 Java 对象,但没有运气出现invalid character "="异常。

您可以更改 Web 服务以返回 JSON 吗?

那是不可能的。他们没有改变他们的合同。如果他们返回 JSON,那就太容易了。

java parsing json pojo hocon

3
推荐指数
1
解决办法
1862
查看次数

类型安全配置 - 从程序设置占位符值

有没有办法动态更改Typesafe 配置文件的字段,使用源代码填充占位符?

例如,假设以下简单配置语句

{
  values {
    string1: ${name1}
    string2: ${name2}
    string3: ${name3}
    string4: ${name4}
  }
}
Run Code Online (Sandbox Code Playgroud)

正如HOCON文档中讨论的以及早期 StackOverflow 问题中提到的,可以使用环境变量和系统属性来实现这一目标。

是否也可以直接从程序中执行相同的操作?例如,在 中Java,有一个Constants类似的类

public class Constants
{
  public static final String name1 = "A";
  public static final String name2 = "B";
  public static final String name3 = "C";
  public static final String name4 = "D";
}
Run Code Online (Sandbox Code Playgroud)

并填充该类的配置字段?

HOCON允许Java在配置文件中集成和执行代码,但显然无法从集成Java代码中设置配置占位符。

java scala akka typesafe-config hocon

2
推荐指数
1
解决办法
3795
查看次数

在类型安全配置中使用 withFallBack 合并配置中的数组值

我有一些数据可用作 HOCON 格式的类型安全配置文件。

有一个像这样的基本文件:

"data":{
  "k1":{
    "values": ["v1", "v2"]
  },
  "k2":{
    "values": ["x1"]
  },
  "k3":{
    "values": ["z1"]
  }
}
Run Code Online (Sandbox Code Playgroud)

可能有一个文件可用于进行一些更改,例如在测试期间,如下所示:

"data":{
  "k1":{
    "values": ["v9"]
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用合并这两个文件

fileConfig.withFallback(baseFileConfig)

最终结果是:

"data":{
  "k1":{
    "values": ["v9"]  // desired ["v1","v2","v9"]
  },
  "k2":{
    "values": ["x1"]
  },
  "k3":{
    "values": ["z1"]
  }
}
Run Code Online (Sandbox Code Playgroud)

即,忽略后备配置中“k1”的数组值。有没有办法在合并后从两个文件中获取连接数组?

scala typesafe-config hocon

2
推荐指数
1
解决办法
1633
查看次数

在 pureconfig 中表示任一

我有一个这样的 HOCON 配置:

[
    {
        name = 1
        url = "http://example.com"
    },
    {
        name = 2
        url = "http://example2.com"
    },
    {
        name = 3
        url = {
            A = "http://example3.com"
            B = "http://example4.com"
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

我想用 pureconfig 解析它。我如何表示 URL 可以是字符串或多个 URL 的映射,每个 URL 都有一个键?

我试过这个:

import pureconfig.ConfigSource
import pureconfig.generic.auto.exportReader

case class Site(name: Int, url: Either[String, Map[String, String]])
case class Config(sites: List[Site])
ConfigSource.default.loadOrThrow[Config]
Run Code Online (Sandbox Code Playgroud)

但结果是“预期类型为 OBJECT。改为找到 STRING”。

我知道 pureconfig 支持Option. 我发现没有提到支持Either,这是否意味着它可以用其他东西代替?

scala config either hocon pureconfig

2
推荐指数
1
解决办法
493
查看次数

在 HOCON 文件中拆分一行

我有一个 HOCON 格式的文件,其中一个很长的字符串被分配给一个键。该字符串包含单引号(和其他“非法”字符),因此我需要将值括在双引号中。像这样的东西:

key="extremely long string with 'illegal' characters :;/. bla bla ..."
Run Code Online (Sandbox Code Playgroud)

为了可读性,我想把它分成多行。我很简单还没有找到一种方法来做到这一点。如果字符串没有用双引号括起来,我可以使用\分割线。如果我不关心添加换行符,我可以使用""". 但我确实关心这些事情。

我研究了非正式的 HOCON 规范,但仍未找到解决方案。

(由于 HOCON 类似于 JSON(我对此一无所知),因此我也将这个问题标记为“JSON”。)

json hocon

1
推荐指数
1
解决办法
1052
查看次数