Bagikan melalui


to_json

Mengonversi kolom yang berisi StructType, ArrayType, MapType atau menjadi VariantType string JSON. Melempar pengecualian, dalam kasus jenis yang tidak didukung.

Syntax

from pyspark.sql import functions as sf

sf.to_json(col, options=None)

Parameter-parameternya

Pengaturan Tipe Description
col pyspark.sql.Column atau str Nama kolom yang berisi struktur, array, peta, atau objek varian.
options dict, opsional Opsi untuk mengontrol konversi. Menerima opsi yang sama dengan sumber data JSON. Selain itu, fungsi ini mendukung pretty opsi yang memungkinkan pembuatan JSON yang cantik.

Pengembalian Barang

pyspark.sql.Column: Objek JSON sebagai kolom string.

Examples

Contoh 1: Mengonversi kolom StructType ke JSON

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)
+------------------------+
|json                    |
+------------------------+
|{"age":2,"name":"Alice"}|
+------------------------+

Contoh 2: Mengonversi kolom ArrayType ke JSON

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)
+-------------------------------------------------+
|json                                             |
+-------------------------------------------------+
|[{"age":2,"name":"Alice"},{"age":3,"name":"Bob"}]|
+-------------------------------------------------+

Contoh 3: Mengonversi kolom MapType ke JSON

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)
+----------------+
|json            |
+----------------+
|{"name":"Alice"}|
+----------------+

Contoh 4: Mengonversi kolom VariantType ke JSON

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)
+----------------+
|json            |
+----------------+
|{"name":"Alice"}|
+----------------+

Contoh 5: Mengonversi kolom MapType berlapis ke JSON

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)
+---------------------------------+
|json                             |
+---------------------------------+
|[{"name":"Alice"},{"name":"Bob"}]|
+---------------------------------+

Contoh 6: Mengonversi kolom ArrayType sederhana ke JSON

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)
+---------------+
|json           |
+---------------+
|["Alice","Bob"]|
+---------------+

Contoh 7: Mengonversi ke JSON dengan opsi yang ditentukan

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)
+---------------+------------------------------+------------------------------+
|date           |to_json(date)                 |to_json(date)                 |
+---------------+------------------------------+------------------------------+
|{2022-02-22, 1}|{"col1":"2022-02-22","col2":1}|{"col1":"2022/02/22","col2":1}|
+---------------+------------------------------+------------------------------+