使用列表映射解析JSON

使用列表映射解析JSON,json,scala,jackson,json4s,Json,Scala,Jackson,Json4s,我不熟悉scala和JSON解析,需要一些帮助。我需要解析复杂的JSON(如下)以获得“dimension”键中的“name”值,即我需要平台和OS_版本 我尝试了多种选择,但不起作用。谢谢你的帮助 这是我尝试过的代码片段,但我无法进一步解析列表。我认为“ANY”关键字导致了一些不匹配/问题 import org.json4s._ import org.json4s.jackson.JsonMethods._ implicit val formats = org.json4s.DefaultF

我不熟悉scala和JSON解析,需要一些帮助。我需要解析复杂的JSON(如下)以获得“dimension”键中的“name”值,即我需要平台和OS_版本

我尝试了多种选择,但不起作用。谢谢你的帮助

这是我尝试过的代码片段,但我无法进一步解析列表。我认为“ANY”关键字导致了一些不匹配/问题

import org.json4s._
import org.json4s.jackson.JsonMethods._

implicit val formats = org.json4s.DefaultFormats

val mapJSON = parse(tmp).extract[Map[String, Any]]
println(mapJSON)

//for ((k,v) <- mapJSON) printf("key: %s, value: %s\n", k, v)

val list_map = mapJSON("dimensions")

您需要创建更具体的类来解析数据,如下所示:

case class Dimension(name: String, table: String, column: String)
case class AllData(uuid: String, dimensions: List[Dimension])

val data = parse(tmp).extract[AllData]
val names = data.dimensions.map(_.name)

您需要创建更具体的类来解析数据,如下所示:

case class Dimension(name: String, table: String, column: String)
case class AllData(uuid: String, dimensions: List[Dimension])

val data = parse(tmp).extract[AllData]
val names = data.dimensions.map(_.name)

谢谢这适用于尺寸。我还需要键“Measures”的“name”和“expression”值,它比前面的更复杂:)。再次感谢你的帮助谢谢。这适用于尺寸。我还需要键“Measures”的“name”和“expression”值,它比前面的更复杂:)。再次感谢你的帮助