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.

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