Convert Nested Case Classes to Nested Maps in Scala

前端 未结 3 1260
野趣味
野趣味 2021-01-15 03:04

I have two nested case classes:

case class InnerClass(param1: String, param2: String)
case class OuterClass(myInt: Int, myInner: InnerClass)
val x = OuterCla         


        
3条回答
  •  Happy的楠姐
    2021-01-15 03:21

    Just call it recursively. So

    def getCCParams(cc: AnyRef) =
      (Map[String, Any]() /: cc.getClass.getDeclaredFields) {(a, f) =>
        f.setAccessible(true)
        val value = f.get(cc) match {
          // this covers tuples as well as case classes, so there may be a more specific way
          case caseClassInstance: Product => getCCParams(caseClassInstance)
          case x => x
        }
        a + (f.getName -> value)
      }
    

提交回复
热议问题