Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.1k views
in Technique[技术] by (71.8m points)

scala - Parsing an empty property into an empty Map with PureConfig

I have a case class like the following:

case class MyConfig(arg1:String, extraArgs:Map[String,String])

and I would like the following to be parsable from the HOCON config

{
    arg1 = 'hello world'
}

However this fail because extraArgs is not defined. I could make extraArgs optional in my case class, but this would be redundant. Is there a way to instruct PureConfig to parse an absent field as an empty collection?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

As @LuisMiguelMejíaSuárez suggested in the comment, you should add a default argument:

import pureconfig._
import pureconfig.generic.auto._
import com.typesafe.config.ConfigFactory

case class MyConfig(url: String, m: Map[String, String] = Map.empty)

val config1 = ConfigFactory.parseString("""{ "url": "https" }""")
val config2 = ConfigSource.fromConfig(config1).load[MyConfig]
println(config2)

Code run at Scastie.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...