次の方法で共有


get_json_object

指定した json path に基づいて json 文字列から json オブジェクトを抽出し、抽出された json オブジェクトの json 文字列を返します。 入力 json 文字列が無効な場合は null が返されます。

構文

from pyspark.sql import functions as sf

sf.get_json_object(col, path)

パラメーター

パラメーター タイプ Description
col pyspark.sql.Column または str json 形式の文字列列。
path str 抽出する json オブジェクトへのパス。

返品ポリシー

pyspark.sql.Column: 指定された JSON オブジェクト値の文字列表現。

例示

例 1: json 文字列から json オブジェクトを抽出する

from pyspark.sql import functions as sf
data = [("1", '''{"f1": "value1", "f2": "value2"}'''), ("2", '''{"f1": "value12"}''')]
df = spark.createDataFrame(data, ("key", "jstring"))
df.select(df.key,
    sf.get_json_object(df.jstring, '$.f1').alias("c0"),
    sf.get_json_object(df.jstring, '$.f2').alias("c1")
).show()
+---+-------+------+
|key|     c0|    c1|
+---+-------+------+
|  1| value1|value2|
|  2|value12|  NULL|
+---+-------+------+

例 2: json 配列から json オブジェクトを抽出する

from pyspark.sql import functions as sf
data = [
("1", '''[{"f1": "value1"},{"f1": "value2"}]'''),
("2", '''[{"f1": "value12"},{"f2": "value13"}]''')
]
df = spark.createDataFrame(data, ("key", "jarray"))
df.select(df.key,
    sf.get_json_object(df.jarray, '$[0].f1').alias("c0"),
    sf.get_json_object(df.jarray, '$[1].f2').alias("c1")
).show()
+---+-------+-------+
|key|     c0|     c1|
+---+-------+-------+
|  1| value1|   NULL|
|  2|value12|value13|
+---+-------+-------+
df.select(df.key,
    sf.get_json_object(df.jarray, '$[*].f1').alias("c0"),
    sf.get_json_object(df.jarray, '$[*].f2').alias("c1")
).show()
+---+-------------------+---------+
|key|                 c0|       c1|
+---+-------------------+---------+
|  1|["value1","value2"]|     NULL|
|  2|          "value12"|"value13"|
+---+-------------------+---------+