Pular para o conteúdo principal

de_json

Analisa uma coluna contendo strings JSON em um MapType com StringType como tipo de chave, StructType ou ArrayType com o esquema especificado. Retorna null, no caso de strings não analisáveis.

Sintaxe

Python
from pyspark.sql import functions as sf

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

Parâmetros

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou str

Uma coluna ou nome de coluna em formato JSON.

schema

DataType ou str

Um StructType, ArrayType de StructType ou literais de string Python com strings formatadas em DDL para usar ao analisar a coluna JSON .

options

dicionário, opcional

Opções para controlar a análise sintática. Aceita as mesmas opções que a fonte de dados JSON.

Devoluções

pyspark.sql.Column: uma nova coluna de tipo complexo a partir de um objeto JSON fornecido.

Exemplos

Exemplo 1 : Analisando JSON com um esquema especificado

Python
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()
Output
+----+
|json|
+----+
| {1}|
+----+

Exemplo 2 : Analisando JSON com strings formatadas em DDL

Python
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()
Output
+----+
|json|
+----+
| {1}|
+----+

Exemplo 3 : Analisando JSON em um MapType

Python
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()
Output
+--------+
| json|
+--------+
|{a -> 1}|
+--------+

Exemplo 4 : Analisando JSON em um ArrayType do tipo StructType

Python
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()
Output
+-----+
| json|
+-----+
|[{1}]|
+-----+

Exemplo 5 : Analisando JSON em um ArrayType

Python
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()
Output
+---------+
| json|
+---------+
|[1, 2, 3]|
+---------+

Exemplo 6 : Analisando JSON com opções especificadas

Python
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()
Output
+---------+----------------+----------------+
| value|from_json(value)|from_json(value)|
+---------+----------------+----------------+
| {a:123}| {NULL}| {123}|
|{"a":456}| {456}| {456}|
+---------+----------------+----------------+