Aller au contenu principal

to_json

Convertit une colonne contenant un StructType, ArrayType, MapType ou un VariantType en une chaîne JSON. Lève une exception, dans le cas d'un type non pris en charge.

Syntaxe

Python
from pyspark.sql import functions as sf

sf.to_json(col, options=None)

parameter

parameter

Type

Description

col

pyspark.sql.Column ou str

Nom de la colonne contenant une structure, un tableau, une carte ou un objet variant.

options

dictionnaire, facultatif

Options pour contrôler la conversion. Accepte les mêmes options que la source de données JSON. De plus, la fonction prend en charge l'option pretty qui permet une génération de JSON formaté.

parameter

Type

Description

col

pyspark.sql.Column ou str

Nom de la colonne contenant une structure, un tableau, une carte ou un objet variant.

options

dictionnaire, facultatif

Options pour contrôler la conversion. Accepte les mêmes options que la source de données JSON. De plus, la fonction prend en charge l'option pretty qui permet une génération de JSON formaté.

Renvoie

pyspark.sql.Column: objet JSON en tant que colonne de chaîne.

Exemples

Exemple 1 : Conversion d'une colonne StructType en JSON

Python
import pyspark.sql.functions as sf
from pyspark.sql import Row
data = [(1, Row(age=2, name='Alice'))]
df = spark.createDataFrame(data, ("key", "value"))
df.select(sf.to_json(df.value).alias("json")).show(truncate=False)
Output
+------------------------+
|json |
+------------------------+
|{"age":2,"name":"Alice"}|
+------------------------+

Exemple 2 : Conversion d'une colonne de type ArrayType en JSON

Python
import pyspark.sql.functions as sf
from pyspark.sql import Row
data = [(1, [Row(age=2, name='Alice'), Row(age=3, name='Bob')])]
df = spark.createDataFrame(data, ("key", "value"))
df.select(sf.to_json(df.value).alias("json")).show(truncate=False)
Output
+-------------------------------------------------+
|json |
+-------------------------------------------------+
|[{"age":2,"name":"Alice"},{"age":3,"name":"Bob"}]|
+-------------------------------------------------+

Exemple 3 : Conversion d'une colonne de type MapType en JSON

Python
import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, {"name": "Alice"})], ("key", "value"))
df.select(sf.to_json(df.value).alias("json")).show(truncate=False)
Output
+----------------+
|json |
+----------------+
|{"name":"Alice"}|
+----------------+

Exemple 4 : Conversion d'une colonne VariantType en JSON

Python
import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, '{"name": "Alice"}')], ("key", "value"))
df.select(sf.to_json(sf.parse_json(df.value)).alias("json")).show(truncate=False)
Output
+----------------+
|json |
+----------------+
|{"name":"Alice"}|
+----------------+

Exemple 5 : convertir une colonne MapType imbriquée en JSON

Python
import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, [{"name": "Alice"}, {"name": "Bob"}])], ("key", "value"))
df.select(sf.to_json(df.value).alias("json")).show(truncate=False)
Output
+---------------------------------+
|json |
+---------------------------------+
|[{"name":"Alice"},{"name":"Bob"}]|
+---------------------------------+

Exemple 6 : Conversion d'une colonne de type ArrayType simple en JSON

Python
import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, ["Alice", "Bob"])], ("key", "value"))
df.select(sf.to_json(df.value).alias("json")).show(truncate=False)
Output
+---------------+
|json |
+---------------+
|["Alice","Bob"]|
+---------------+

Exemple 7 : Conversion en JSON avec des options spécifiées

Python
import pyspark.sql.functions as sf
df = spark.sql("SELECT (DATE('2022-02-22'), 1) AS date")
json1 = sf.to_json(df.date)
json2 = sf.to_json(df.date, {"dateFormat": "yyyy/MM/dd"})
df.select("date", json1, json2).show(truncate=False)
Output
+---------------+------------------------------+------------------------------+
|date |to_json(date) |to_json(date) |
+---------------+------------------------------+------------------------------+
|{2022-02-22, 1}|{"col1":"2022-02-22","col2":1}|{"col1":"2022/02/22","col2":1}|
+---------------+------------------------------+------------------------------+