Scala 如何将Map转换为case类(递归)

Scala 如何将Map转换为case类(递归),scala,dictionary,reflection,case-class,Scala,Dictionary,Reflection,Case Class,如何将带有嵌套映射的映射(键包含嵌套case cla的名称)转换为case类 假设我们有: case class OuterClass(fieldName1: String, fieldName2: InnerClass) case class InnerClass(innerFieldName: Int) 如何转换: Map("fieldName1" -> "stringValue", "name" -> "ClassName", "fieldName2" -

如何将带有嵌套映射的映射(键包含嵌套case cla的名称)转换为case类

假设我们有:

case class OuterClass(fieldName1: String, fieldName2: InnerClass)
case class InnerClass(innerFieldName: Int)
如何转换:

Map("fieldName1" -> "stringValue", 
    "name" -> "ClassName", 
    "fieldName2" -> Map(
         "innerFieldName" -> "value", 
         "innerClassName" -> "CaseClassName"))

OuterClass("stringValue", InnerClass("value"))

您可以使用:

注意,这里不需要
innerClassName
字段。如果您不知道根类的名称:

create(m.classSymbol(Class.forName("RootCaseClassName")).selfType, ...)
create(m.classSymbol(Class.forName("RootCaseClassName")).selfType, ...)