读取json格式的字符串直接解析出json中属性对应的值

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 }

 

 
posted @ 2021-03-04 16:13  大数据程序员  阅读(885)  评论(0编辑  收藏  举报