作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个 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/
我是一名优秀的程序员,十分优秀!