简体   繁体   English

如何使用 Typesafe 配置库获取列表

[英]How to get a list with the Typesafe config library

I'm trying in Scala to get a list from a config file like something.conf with TypeSafe .我想在斯卡拉从像一个配置文件获取列表something.confTypeSafe

In something.conf I set the parameter:something.conf我设置了参数:

mylist=["AA","BB"]

and in my Scala code I do:在我的 Scala 代码中,我这样做:

val myList = modifyConfig.getStringList("mylist")

Simple configuration parameters works fine but could somebody give me an example of how to extract a list?简单的配置参数工作正常,但有人能给我一个如何提取列表的例子吗?

As @ghik notes, the Typesafe Config library is Java based, so you get a java.util.List[String] instead of a scala.List[String] .正如@ghik 所指出的,Typesafe Config 库是基于Java的,因此您将获得java.util.List[String]而不是scala.List[String] So either you make a conversion to a scala.List :所以要么转换为scala.List

import collection.JavaConversions._
val myList = modifyConfig.getStringList("mylist").toList

Or (probably less awkward) you look for a Scala library.或者(可能不那么尴尬)您寻找 Scala 库。 The tools wiki links at least to these maintained libraries: 工具 wiki至少链接到这些维护的库:

(Disclaimer: I don't use these, so you will have to check that they support your types and format) (免责声明:我不使用这些,因此您必须检查它们是否支持您的类型和格式)

For the record, since Scala 2.12 JavaConversions are deprecated so you can:作为记录,由于 Scala 2.12 JavaConversions已弃用,因此您可以:

import collection.JavaConverters._
val myList: List[String] = modifyConfig.getStringList("mylist").asScala.toList

You can try my scala wrapper https://github.com/andr83/scalaconfig - it supports reading native scala types directly from config object.您可以尝试我的 scala 包装器https://github.com/andr83/scalaconfig - 它支持直接从配置对象读取本机 scala 类型。 In your case it will look:在您的情况下,它将看起来:

val myList = modifyConfig.as[List[String]]("mylist")

Starting Scala 2.13 , the standard library provides Java to Scala implicit list conversions via scala.jdk.CollectionConverters :Scala 2.13开始,标准库通过scala.jdk.CollectionConverters提供 Java 到 Scala 的隐式列表转换:

import scala.jdk.CollectionConverters._

val myList: List[String] = conf.getStringList("mylist").asScala.toList

This replaces deprecated packages scala.collection.JavaConverters/JavaConversions .这取代了不推荐使用的包scala.collection.JavaConverters/JavaConversions

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM