Search code examples
scalahoconpureconfig

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?


Solution

  • 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.