gpt4 book ai didi

json - 霍康 : Read an array of objects from a configuration file

转载 作者:行者123 更新时间:2023-12-02 04:05:34 25 4
gpt4 key购买 nike

我创建了一个 Play 应用程序 (2.1),它使用 Hocon format 中的 conf/application.conf 中的配置。 .

我想在配置中添加一系列项目。文件 conf/application.conf 如下所示:

...
projects = [
{name: "SO", url: "http://stackoverflow.com/"},
{name: "google", url: "http://google.com"}
]

我尝试在我的 Scala 项目中读取此配置:

import scala.collection.JavaConversions._
case class Project(name: String, url: String)

val projectList: List[Project] =
Play.maybeApplication.map{x =>
val simpleConfig = x.configration.getObjectList("projects").map{y =>
y.toList.map{z =>
Project(z.get("name").toString, z.get("url").toString) // ?!? doesn't work

...
}}}}}}}} // *arg*

这种方法似乎非常复杂,我迷失在很多选项中,而且我的 Eclipse IDE 无法给我任何有关类的提示。

有没有人举例说明如何从 Hocon 配置文件中读取对象数组?或者我应该为此使用带有 JSON 解析器的 JSON 文件而不是 Hocon?

最佳答案

以下内容在 Play 2.1.2 中适用于我(尽管我的 play.Play 对象上没有 .maybeApplication ,但我不确定为什么你这样做):

import play.Play
import scala.collection.JavaConversions._
case class Project(name: String, url: String)

val projectList: List[Project] = {
val projs = Play.application.configuration.getConfigList("projects") map { p =>
Project(p.getString("name"), p.getString("url")) }
projs.toList
}

println(projectList)

给出输出:

List(Project(SO,http://stackoverflow.com/), Project(google,http://google.com))

虽然我也没有迷失在大量 Option 实例中,但并没有太大的不同(同样,与您似乎拥有的 API 不同)。

更重要的是,getConfigList 似乎更符合您想要执行的操作,因为它返回 List[play.Configuration],这使您能够指定类型检索而不是诉诸强制转换或 .toString() 调用。

关于json - 霍康 : Read an array of objects from a configuration file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17196166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com