2013-07-28 34 views
24

Tôi đang cố gắng trong Scala để có được một danh sách từ một tập tin cấu hình như something.conf với typesafe http://typesafehub.github.io/config/latest/api/index.htmlLàm thế nào để có được một danh sách với thư viện cấu hình typesafe

Trong something.conf Tôi đặt tham số:

mylist=["AA","BB"] 

và trong mã Scala của tôi, tôi làm:

val myList = modifyConfig.getStringList("mylist") 

thông số cấu hình đơn giản hoạt động tốt nhưng ai đó có thể cho tôi một ví dụ về làm thế nào để trích xuất một danh sách?

Chúc mừng!

+1

Bạn có thể làm rõ các câu hỏi? Nhìn vào API, mã của bạn có vẻ ổn. Bạn nên tìm một 'List [String]' trong 'myList'. –

+2

Đoán của tôi là bạn mong đợi kết quả của 'getStringList' thành một Scala' List'. Đây không phải là trường hợp - 'typesafe-config' là một thư viện Java thuần túy và' getStringList' trả về việc thực thi 'java.util.List'. – ghik

Trả lời

26

Như ghi chú @ghik, thư viện Config Types Config là Java dựa, vì vậy bạn nhận được java.util.List[String] thay vì scala.List[String]. Vì vậy, một trong hai bạn thực hiện một chuyển đổi sang một scala.List:

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

Hoặc (có lẽ ít vụng về), bạn tìm kiếm một thư viện Scala. Các tools wiki liên kết ít nhất đến các thư viện duy trì:

(Disclaimer: Tôi không sử dụng các, vì vậy bạn sẽ phải kiểm tra xem họ hỗ trợ các kiểu và định dạng của bạn)

+2

Tôi mới đến Scala :-) và bạn đã đúng Tôi đang trộn java.util.List với scala.List. 'import collection.JavaConversions._ val myList = modifyConfig.getStringList (" danh sách của tôi "). toList' Đã thực hiện thủ thuật. Cảm ơn và tôi sẽ kiểm tra các liên kết này ... – Martin

2

Bạn có thể thử trình bao bọc scala của tôi https://github.com/andr83/scalaconfig - nó hỗ trợ đọc các kiểu scala gốc trực tiếp từ đối tượng cấu hình. Trong trường hợp của bạn, nó sẽ xem xét:

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

Đối với hồ sơ, vì Scala 2.12 JavaConversions đang bị phản đối để bạn có thể:

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

Điều này sẽ được đánh dấu là câu trả lời chính xác ngay bây giờ. –

+0

Điều này sẽ được đánh dấu là "câu trả lời đúng" chính xác hơn. – bigdatamann

Các vấn đề liên quan