我对反思并不是很高兴,这个答案使用无形状代码在某些情况下(但似乎有许多边缘情况)可以使用无形状代码将MAP[String,Any]转换为case类,不能处理可选的子结构
使用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))
我有两个嵌套的case类: 当然,解决方案应该是泛型的,并且适用于任何case类。 注意:这个讨论很好地回答了如何将单个case类映射到映射。但我无法将其用于嵌套的case类。相反,我得到了:
我需要在代码的几个地方将这个映射转换为我的case类,如下所示: 最简单的方法是什么?我能用隐式吗?
我正在使用两个for循环将下面的对象结构列表转换为一个HashMap,如下所示。 我如何使用lambdas/streams做同样的事情呢?我试过用平面地图,但没用。流式传输时无法访问嵌套得注册区域. 基于@Nidhish Krishnan答案更新工作代码示例
想要将每个数字乘以3,如下所示 为什么会导致以下异常?我如何才能真正访问地图?
我有一个实体 我想根据货币计算每个部门的金额,并将结果写在行中。例子: 结果:“莫斯科200美元,巴黎100美元,莫斯科200卢布” 对于it: 我收到一个结果: 但我不知道如何转换地图