Edmondo
Edmondo

Reputation: 20080

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?

Upvotes: 1

Views: 681

Answers (1)

Tomer Shetah
Tomer Shetah

Reputation: 8529

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.

Upvotes: 3

Related Questions