所有默認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