【发布时间】:2021-08-20 15:18:10
【问题描述】:
我有一个已读入嵌套案例类的 json 值。 从这里我需要一个(类别,评级)的scala地图。请帮助。
预期输出:
Map("MTH1"-> "9A","MTH2"-> "9B","SCI1" -> "8A")
注意:如果任何值为none,则应省略。
需要一些优雅而聪明的方法将值转换为 scala Map
val myVal: List[myClass] = List(myClass("Tim", "100", Some("hills"),
List(subject("geometry", Some("MTH1"), Some("9A")),
subject("trigonometry", Some("MTH2"), Some("9B")),
subject("physics", Some("SCI1"), Some("8A"))
)))
case class myClass(
name: String,
classId: String,
teacher: Option[String],
subjects: List[subject]
)
case class subject(
name: String,
category: Option[String],
rating: Option[String]
)
myVal.foreach(i =>
(
i.subjects.foreach(
j => println(j.category.get, j.rating.get)
)))
【问题讨论】:
-
如果缺少类别或评级 (
None),您希望它做什么?将主题排除在地图之外? -
您的“预期输出”无效,因为您不能拥有具有两个相同键的
Map,而此Map具有两个“数学”键。它会变成Map("maths"-> "9B","science" -> "8A") -
您的预期输出不会像地图一样工作,因为有两个名为“math”的键,并且键必须是唯一的。成对列表对您有用吗?
-
抱歉键不一样。我正在更新。
-
不投反对票。我已尽力澄清。
标签: scala