我对反射并没有太多的兴趣,这个答案在某些情况下使用无形的作品(但似乎有很多边缘情况)将 Map[String, Any] 转换为 case 类的无形状代码无法处理可选子结构 https://stackoverflow.com/questions/55042252/shapeless-code-to-convert-mapstring-any-to-case-class-cannot-handle-optional
有谁知道有一个不错的库只需几个 LOC 即可完成此操作?
使用杰克逊:
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]))
Output: Bar(3,foo,Foo(List(1, 2),None))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)