问题
I'm trying in Scala to get a list from a config file like something.conf
with TypeSafe
.
In something.conf
I set the parameter:
mylist=["AA","BB"]
and in my Scala code I do:
val myList = modifyConfig.getStringList("mylist")
Simple configuration parameters works fine but could somebody give me an example of how to extract a list?
回答1:
As @ghik notes, the Typesafe Config library is Java based, so you get a java.util.List[String]
instead of a scala.List[String]
. So either you make a conversion to a scala.List
:
import collection.JavaConversions._
val myList = modifyConfig.getStringList("mylist").toList
Or (probably less awkward) you look for a Scala library. The tools wiki links at least to these maintained libraries:
- Configrity
- Bee Config
(Disclaimer: I don't use these, so you will have to check that they support your types and format)
回答2:
For the record, since Scala 2.12 JavaConversions
are deprecated so you can:
import collection.JavaConverters._
val myList: List[String] = modifyConfig.getStringList("mylist").asScala.toList
回答3:
You can try my scala wrapper https://github.com/andr83/scalaconfig - it supports reading native scala types directly from config object. In your case it will look:
val myList = modifyConfig.as[List[String]]("mylist")
回答4:
Starting Scala 2.13
, the standard library provides Java to Scala implicit list conversions via scala.jdk.CollectionConverters:
import scala.jdk.CollectionConverters._
val myList: List[String] = conf.getStringList("mylist").asScala.toList
This replaces deprecated packages scala.collection.JavaConverters/JavaConversions
.
来源:https://stackoverflow.com/questions/17913215/how-to-get-a-list-with-the-typesafe-config-library