所有默认scala.util.parsing.json._
库可能在这种情况下是丑陋的。首先,还是尝试一些如下
scala> val terriblyTraversedProperty = parsed.map(_ match { case head :: tail => head case _ => Option.empty }).map(_ match { case firstUser: Map[String, String] => firstUser("Tags") case _ => Option.empty })
terriblyTraversedProperty: Option[java.io.Serializable] = Some(one, two, three)
要拆分是Option[String]
的财产,
scala> val tags = terriblyTraversedProperty.map(_ match { case tagString: String => tagString.split(",").toList case _ => Option.empty[List[String]]}).get
tags: Product with java.io.Serializable = List(one, " two", " three")
tags
是Product with java.io.Serializable
但也List[String]
scala> tags.isInstanceOf[Seq[String]]
res35: Boolean = true
我可以推荐斯卡拉json4s库,如果你有自由选择库,
添加json4s
到build.sbt,
libraryDependencies += "org.json4s" % "json4s-native_2.11" % "3.5.2"
例如,
scala> import org.json4s._
import org.json4s._
scala> import org.json4s.native.JsonMethods._
import org.json4s.native.JsonMethods._
scala> val parsed = parse("""[{"UserName":"user1","Tags":"one, two, three"},{"UserName":"user2","Tags":"one, two, three"}]""")
parsed: org.json4s.JValue = JArray(List(JObject(List((UserName,JString(user1)), (Tags,JString(one, two, three)))), JObject(List((UserName,JString(user2)), (Tags,JString(one, two, three))))))
从第一获得属性元件
scala> parsed.values.asInstanceOf[List[Map[String, String]]](0)("Tags")
res13: String = one, two, three
您使用哪个库来解析JSON? –
@YuvalItzchakov更新。 – dangonfast