from_json
Analyse une colonne contenant une chaîne JSON en un MapType avec StringType comme type de clés, StructType ou ArrayType avec le schéma spécifié. Retourne null, dans le cas d'une chaîne de caractères impossible à analyser.
Syntaxe
from pyspark.sql import functions as sf
sf.from_json(col, schema, options=None)
parameter
parameter | Type | Description |
|---|---|---|
|
| Une colonne ou un nom de colonne au format JSON. |
|
| Un StructType, un ArrayType de StructType ou un littéral de chaîne Python avec une chaîne formatée DDL à utiliser lors de l'analyse de la colonne JSON. |
| dictionnaire, facultatif | Options pour contrôler l'analyse. Accepte les mêmes options que la source de données JSON. |
Renvoie
pyspark.sql.Column: une nouvelle colonne de type complexe à partir de l'objet JSON donné.
Exemples
Exemple 1 : Analyse JSON avec un schéma spécifié
import pyspark.sql.functions as sf
from pyspark.sql.types import StructType, StructField, IntegerType
schema = StructType([StructField("a", IntegerType())])
df = spark.createDataFrame([(1, '''{"a": 1}''')], ("key", "value"))
df.select(sf.from_json(df.value, schema).alias("json")).show()
+----+
|json|
+----+
| {1}|
+----+
Exemple 2 : Analyse de JSON avec une chaîne formatée en DDL
import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, '''{"a": 1}''')], ("key", "value"))
df.select(sf.from_json(df.value, "a INT").alias("json")).show()
+----+
|json|
+----+
| {1}|
+----+
Exemple 3 : Analyse du JSON en un MapType
import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, '''{"a": 1}''')], ("key", "value"))
df.select(sf.from_json(df.value, "MAP<STRING,INT>").alias("json")).show()
+--------+
| json|
+--------+
|{a -> 1}|
+--------+
Exemple 4 : Analyse du JSON en un ArrayType de StructType
import pyspark.sql.functions as sf
from pyspark.sql.types import ArrayType, StructType, StructField, IntegerType
schema = ArrayType(StructType([StructField("a", IntegerType())]))
df = spark.createDataFrame([(1, '''[{"a": 1}]''')], ("key", "value"))
df.select(sf.from_json(df.value, schema).alias("json")).show()
+-----+
| json|
+-----+
|[{1}]|
+-----+
Exemple 5 : Analyse de JSON en un ArrayType
import pyspark.sql.functions as sf
from pyspark.sql.types import ArrayType, IntegerType
schema = ArrayType(IntegerType())
df = spark.createDataFrame([(1, '''[1, 2, 3]''')], ("key", "value"))
df.select(sf.from_json(df.value, schema).alias("json")).show()
+---------+
| json|
+---------+
|[1, 2, 3]|
+---------+
Exemple 6 : Analyse de JSON avec des options spécifiées
import pyspark.sql.functions as sf
df = spark.createDataFrame([(1, '''{a:123}'''), (2, '''{"a":456}''')], ("key", "value"))
parsed1 = sf.from_json(df.value, "a INT")
parsed2 = sf.from_json(df.value, "a INT", {"allowUnquotedFieldNames": "true"})
df.select("value", parsed1, parsed2).show()
+---------+----------------+----------------+
| value|from_json(value)|from_json(value)|
+---------+----------------+----------------+
| {a:123}| {NULL}| {123}|
|{"a":456}| {456}| {456}|
+---------+----------------+----------------+