Aller au contenu principal

get_json_object

Extrait l'objet JSON d'une chaîne JSON en fonction du JSON path spécifié, et renvoie la chaîne JSON de l'objet JSON extrait. Il renverra nul si la chaîne JSON d'entrée n'est pas valide.

Syntaxe

Python
from pyspark.sql import functions as sf

sf.get_json_object(col, path)

parameter

parameter

Type

Description

col

pyspark.sql.Column ou str

Colonne de chaîne au format JSON.

path

str

Chemin vers l'objet JSON à extraire.

parameter

Type

Description

col

pyspark.sql.Column ou str

Colonne de chaîne au format JSON.

path

str

Chemin vers l'objet JSON à extraire.

Renvoie

pyspark.sql.Column: représentation sous forme de chaîne de la valeur de l'objet JSON donné.

Exemples

Exemple 1 : Extraire un objet JSON d'une chaîne 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|
+---+-------+------+

Exemple 2 : Extraire un objet JSON à partir d'un tableau 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"|
+---+-------------------+---------+