メインコンテンツまでスキップ

to_json

StructTypeArrayTypeMapType 、またはVariantTypeを含む列を JSON 文字列に変換します。サポートされていない型の場合は例外をスローします。

構文

Python
from pyspark.sql import functions as sf

sf.to_json(col, options=None)

パラメーター

パラメーター

Type

説明

col

pyspark.sql.Column または文字列

構造体、配列、マップ、またはバリアント オブジェクトを含む列の名前。

options

辞書(オプション)

変換を制御するためのオプション。JSON データソースと同じオプションを受け入れます。さらに、この関数は、きれいな JSON 生成を可能にするprettyオプションをサポートしています。

パラメーター

Type

説明

col

pyspark.sql.Column または文字列

構造体、配列、マップ、またはバリアント オブジェクトを含む列の名前。

options

辞書(オプション)

変換を制御するためのオプション。JSON データソースと同じオプションを受け入れます。さらに、この関数は、きれいな JSON 生成を可能にするprettyオプションをサポートしています。

戻り値

pyspark.sql.Column: 文字列列としての JSON オブジェクト。

例1 : StructType列を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"}|
+------------------------+

例2 : ArrayType列を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"}]|
+-------------------------------------------------+

例3 : MapType列を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"}|
+----------------+

例4 : VariantType列を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"}|
+----------------+

例5 : ネストされたMapType列を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"}]|
+---------------------------------+

例6 : 単純なArrayType列を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"]|
+---------------+

例7 : 指定したオプションでJSONに変換する

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}|
+---------------+------------------------------+------------------------------+
このページの見出し