Pular para o conteúdo principal

para_json

Converte uma coluna contendo StructType, ArrayType, MapType ou VariantType em strings JSON . Lança uma exceção no caso de um tipo não suportado.

Sintaxe

Python
from pyspark.sql import functions as sf

sf.to_json(col, options=None)

Parâmetros

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou str

Nome da coluna que contém uma estrutura, um array, um mapa ou um objeto variante.

options

dicionário, opcional

Opções para controlar a conversão. Aceita as mesmas opções que a fonte de dados JSON. Além disso, a função suporta a opção pretty que permite a geração de JSON formatado.

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou str

Nome da coluna que contém uma estrutura, um array, um mapa ou um objeto variante.

options

dicionário, opcional

Opções para controlar a conversão. Aceita as mesmas opções que a fonte de dados JSON. Além disso, a função suporta a opção pretty que permite a geração de JSON formatado.

Devoluções

pyspark.sql.ColumnObjeto JSON como coluna de strings.

Exemplos

Exemplo 1 : Convertendo uma coluna StructType para 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"}|
+------------------------+

Exemplo 2 : Convertendo uma coluna do tipo ArrayType para 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"}]|
+-------------------------------------------------+

Exemplo 3 : Convertendo uma coluna MapType para 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"}|
+----------------+

Exemplo 4 : Convertendo uma coluna VariantType para 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"}|
+----------------+

Exemplo 5 : Convertendo uma coluna MapType aninhada em 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"}]|
+---------------------------------+

Exemplo 6 : Convertendo uma coluna simples do tipo ArrayType para 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"]|
+---------------+

Exemplo 7 : Convertendo para JSON com opções especificadas

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