get_json_object(jsonstr,json属性)
scala代码:
1 package com.it.baizhan.scalacode.sparksql.examples 2 3 import org.apache.spark.sql.SparkSession 4 5 /** 6 * 读取json格式的字符串直接解析出json中属性对应的值: get_json_object(jsonstr,json属性) 7 */ 8 object ReadJsonStringExp { 9 def main(args: Array[String]): Unit = { 10 val session = SparkSession.builder().master("local").appName("test").getOrCreate() 11 val jsonList = List[String]( 12 "{\"name\":\"zhangsan\",\"age\":18}", 13 "{\"name\":\"lisi\",\"age\":19}", 14 "{\"name\":\"wangwu\",\"age\":20}", 15 "{\"name\":\"maliu\",\"age\":21}" 16 ) 17 18 import session.implicits._ 19 import org.apache.spark.sql.functions._ 20 val df = jsonList.toDF("info") 21 22 23 24 df.createTempView("t") 25 session.sql( 26 """ 27 | select info ,get_json_object(info,"$.name") as name ,get_json_object(info,"$.age") as age 28 | from t 29 """.stripMargin).show(false) 30 31 /** 32 * +----------------------------+--------+---+ 33 * |info |name |age| 34 * +----------------------------+--------+---+ 35 * |{"name":"zhangsan","age":18}|zhangsan|18 | 36 * |{"name":"lisi","age":19} |lisi |19 | 37 * |{"name":"wangwu","age":20} |wangwu |20 | 38 * |{"name":"maliu","age":21} |maliu |21 | 39 * +----------------------------+--------+---+ 40 */ 41 42 43 // df.select($"info",get_json_object($"info","$.name").as("name"),get_json_object($"info","$.age").as("age")) 44 // .show(false) 45 46 } 47 48 }