spark解析json数据
一、scala.util.parsing.json.JSON
import scala.util.parsing.json.JSON val data="""["美食|1.0"]""" JSON.parseFull(data).get.asInstanceOf[List[String]]
二、com.alibaba.fastjson
1.添加依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
2.实例
import com.alibaba.fastjson
val resJson=fastjson.JSON.parseObject(jsonStr).get("extractResult")
//resJson为object,可以toString,如果是json的话可以继续调用parseObject解析
三、将List[Map]转化为json字符串
import com.alibaba.fastjson.{JSON, JSONObject} import com.alibaba.fastjson.serializer.SerializeFilter val sortanchor=List(("周杰伦",10,5,1),("周杰伦专辑",8,2,1)) val jsonList=sortanchor.map(t=>{ val query=t._1 val pv=t._2 val label=t._4 val json=new JSONObject() json.put("query",query) json.put("pv",pv) json.put("label",label) val feaJsonStr=json.toJSONString feaJsonStr }) val jsonArray=jsonList.toArray val anchorJsonString=JSON.toJSONString(jsonArray, null.asInstanceOf[Array[SerializeFilter]])
四、将json字符串转化为List[Map]
import scala.util.parsing.json.JSON
val rec="""["{\"pv\":10,\"query\":\"周杰伦\",\"label\":1}","{\"pv\":8,\"query\":\"周杰伦专辑\",\"label\":1}"]"""
val jsonList=JSON.parseFull(rec).get.asInstanceOf[List[String]]
val recList=jsonList.map(t=>{
val queryMap=JSON.parseFull(t).get.asInstanceOf[Map[String,String]]
val query=queryMap.getOrElse("query","null")
val pv=queryMap.getOrElse("pv",-1).asInstanceOf[Double].toInt
val label=queryMap.getOrElse("label",-1).asInstanceOf[Double].toInt
(query,pv,label)
})
浙公网安备 33010602011771号