当前位置: 首页 > 知识库问答 >
问题:

如何使用Scala中的任何库将泛型的潜在嵌套映射map[String,Any]转换为case类?

周辉
2023-03-14

我对反思并不是很高兴,这个答案使用无形状代码在某些情况下(但似乎有许多边缘情况)可以使用无形状代码将MAP[String,Any]转换为case类,不能处理可选的子结构

共有1个答案

归俊捷
2023-03-14

使用Jackson:

libraryDependencies += "com.fasterxml.jackson.core" % "jackson-databind" % "2.9.8"
libraryDependencies += "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.9.8"
case class Foo(a: List[Int], b: Option[Double])
case class Bar(c: Int, d: String, e: Foo)

val mapper = new ObjectMapper().registerModule(DefaultScalaModule)
println(mapper.convertValue(Map(
  "c" -> 3, 
  "d" -> "foo", 
  "e" -> Map("a" -> List(1, 2))), classOf[Bar]))

输出:栏(3,foo,foo(列表(1,2),None))

 类似资料: