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)
      })

  

 

posted @ 2021-09-13 20:26  HappierJoanne  阅读(447)  评论(0)    收藏  举报