迭代类型安全文件

Duc*_*035 0 scala playframework-2.0 typesafe

我读过这个话题

在类型安全配置中迭代字段

并做了一些更改,但仍然不知道如何迭代播放框架中的conf文件.

  Providers=[{1234 : "CProduct"},
{12345 : "ChProduct"},
{123 : "SProduct"}]
Run Code Online (Sandbox Code Playgroud)

这是我的conf文件,名为providers.conf,问题是如何迭代它们并从中创建一个下拉框.我想把它们作为地图,如果可能的话是[int,string]

我知道,我必须把它们当作

val config = ConfigFactory.load("providers.conf").getConfigList("Providers")
Run Code Online (Sandbox Code Playgroud)

我可以像这样的conf文件,但是,我应该从模板中获取它,为了做到这一点,我需要将其转换为hashmap或列表或任何功能.

干杯,

4le*_*x1v 5

我不确定这是否是最有效的方法,但这有效:

1)让我们得到我们的配置文件:

val config = ConfigFactory.load().getConfigList("providers")
scala> config.getConfigList("providers")
res23: java.util.List[_ <: com.typesafe.config.Config] = [Config(SimpleConfigObject({"id":"1234","name":" Product2"})), Config(SimpleConfigObject({"id":"4523","name":"Product1"})), Config(SimpleConfigObject({"id":"432","name":" Product3"}))]
Run Code Online (Sandbox Code Playgroud)

2)对于此示例,引入Provider实体:

case class Provider(id: String, name: String)
Run Code Online (Sandbox Code Playgroud)

3)现在让我们将带有配置的列表转换为提供者:

import scala.collection.JavaConversions._
providers.map(conf => Provider(conf.getString("id"), conf.getString("name"))).toList
res27: List[Provider] = List(Provider(1234, Product2), Provider(4523,Product1), Provider(432, Product3))
Run Code Online (Sandbox Code Playgroud)

我们需要显式转换它toList,因为默认情况下Java List转换为Buffer.