JSON解析
import scala.util.parsing.json.JSON
val jsonSome = JSON.parseFull(jsonStr)//將JSON格式字符串解讀成Some
val jsonAny = jsonSome.get //將some格式中的內(nèi)容get出來捕犬,得到一個any類型的值
jsonAny match {
case jsonMap: Map[String, String] =>jsonMap//匹配成功返回我們需要的Map類型數(shù)據(jù)
case _ => {println("匹配失敗");null}//匹配失敗返回Null值
}
函數(shù) JSON.parseFull(jsonStr)
對JSON字符串進(jìn)行解析會得到一個Some(Any)牢硅。Any的類型其實(shí)為Map[String,Any]類型,Map里面的key和value對應(yīng)JSON中的key和value。之后我們需要對Some(Any)進(jìn)行g(shù)et操作,得到其中的Any,然后在對Any進(jìn)行模式匹配得到我們最終需要的Map[String,String]類型宦搬。
一開始我很奇怪,我這個Json解析出來就應(yīng)該是個Map[String,String]格式的數(shù)據(jù)乔外,為什么一開始給個Any床三,后面還是個Map[String,Any]呢,這樣還要模式匹配過才能拿到最終結(jié)果不是很煩杨幼。
后來仔細(xì)想過之后撇簿,想到Json解析出來的返回類型是不確定的,有可能是個Map[String,String],還有可能是Map[String,Map[String,String]]差购。這樣這個Map的類型定不下來四瘫,函數(shù)就沒法把這個類型寫死,這種解析方法還是需要我們之后進(jìn)行一步模式匹配才能拿到我們需要的數(shù)據(jù)欲逃。