メインコンテンツまでスキップ

get_json_object

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

構文

Python
from pyspark.sql import functions as sf

sf.get_json_object(col, path)

パラメーター

パラメーター

Type

説明

col

pyspark.sql.Column または文字列

JSON形式の文字列列。

path

str

抽出する JSON オブジェクトへのパス。

戻り値

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

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

Python
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()
Output
+---+-------+------+
|key| c0| c1|
+---+-------+------+
| 1| value1|value2|
| 2|value12| NULL|
+---+-------+------+

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

Python
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()
Output
+---+-------+-------+
|key| c0| c1|
+---+-------+-------+
| 1| value1| NULL|
| 2|value12|value13|
+---+-------+-------+
Python
df.select(df.key,
sf.get_json_object(df.jarray, '$[*].f1').alias("c0"),
sf.get_json_object(df.jarray, '$[*].f2').alias("c1")
).show()
Output
+---+-------------------+---------+
|key| c0| c1|
+---+-------------------+---------+
| 1|["value1","value2"]| NULL|
| 2| "value12"|"value13"|
+---+-------------------+---------+