Condividi tramite


from_json

Analizza una colonna contenente una stringa JSON in un MapType oggetto con StringType come tipo di StructType chiavi o ArrayType con lo schema specificato. Restituisce null, nel caso di una stringa non verificabile.

Sintassi

from pyspark.sql import functions as sf

sf.from_json(col, schema, options=None)

Parametri

Parametro TIPO Description
col pyspark.sql.Column o str Nome di colonna o colonna in formato JSON.
schema DataType o str Valore letterale stringa StructType, ArrayType di StructType o Python con una stringa in formato DDL da usare durante l'analisi della colonna json.
options dict, facoltativo Opzioni per controllare l'analisi. Accetta le stesse opzioni dell'origine dati JSON.

Restituzioni

pyspark.sql.Column: nuova colonna di tipo complesso da un determinato oggetto JSON.

Esempi

Esempio 1: Analisi di JSON con uno schema specificato

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}|
+----+

Esempio 2: Analisi di JSON con una stringa in formato 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}|
+----+

Esempio 3: Analisi di JSON in 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}|
+--------+

Esempio 4: Analisi di JSON in un arrayType di 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}]|
+-----+

Esempio 5: Analisi di JSON in 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]|
+---------+

Esempio 6: Analisi di JSON con le opzioni specificate

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}|
+---------+----------------+----------------+