【问题标题】:Convert HOCON (.conf) to JSON with scala/play?使用 scala/play 将 HOCON (.conf) 转换为 JSON?
【发布时间】:2016-06-28 20:21:58
【问题描述】:

我想将 .conf 文件直接转换为 json,以便将其传递给前端。有没有办法在 scala/play 中做到这一点?我现在走的路似乎非常繁琐:

val conf: Configuration = play.api.Configuration.apply(ConfigFactory.parseFile(new File("app/assets/strings.conf")))
conf.entrySet.seq.map(t => t._1 -> t._2.unwrapped())
// which gives me a Seq[(String, AnyRef)] which cannot be converted with Json, so the path from here is even uglier

我很想回到 JSON,但 HOCON 语法非常适合我们的用例。 HOCON 基本上是带有较少大括号和引号的 JSON - 所以转换应该非常简单。我仍然找不到一种简单的方法来使用 play/scala 做类似的事情。

【问题讨论】:

    标签: scala playframework-2.0 hocon


    【解决方案1】:

    这样就可以了:

    val config = ConfigFactory.load(); // read Config here 
    
    val configJSON : String = 
      config.root().render( ConfigRenderOptions.concise() )
    

    这会给你一个 JSON 字符串。

    您希望输出的格式有其他选项。 文档中的更多内容: https://typesafehub.github.io/config/latest/api/com/typesafe/config/ConfigValue.html#render()

    【讨论】:

    • 完美运行。谢谢! :)
    • NB - 如果你 load("anystringatall") 你不会得到一个错误,而是一种默认配置,这可能会让你感到困惑。我试图从 REPL 加载一个 HOCON 格式的配置文件并最终使用 ConfigFactory.parseFile(File) 来确保我正在解析正确的文件
    【解决方案2】:

    如果有人来到这里想知道如何在 Java 中做同样的事情,至少对于 play 2.2.x,您可以执行以下操作:

    config.underlying().root().render(ConfigRenderOptions.concise());
    

    【讨论】:

    • 对所有投反对票的人,请告诉我为什么在这里..这应该是一个规则..谢谢
    猜你喜欢
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    相关资源
    最近更新 更多