from_json

JSON dizesini içeren bir sütunu anahtar türü MapType olarak veya StringType belirtilen şemayla bir StructTypeArrayType içine ayrıştırıyor. nullAyrıştırılamayan bir dize durumunda döndürür.

Sözdizimi

from pyspark.sql import functions as sf

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

Parametreler

Parametre Türü Description
col pyspark.sql.Column veya str JSON biçiminde bir sütun veya sütun adı.
schema DataType veya str Json sütununu ayrıştırırken kullanılacak DDL biçimli bir dize ile StructType, StructType ArrayType veya Python dize değişmez değeri.
options dict, isteğe bağlı Ayrıştırma denetimi seçenekleri. Json veri kaynağıyla aynı seçenekleri kabul eder.

İade

pyspark.sql.Column: verilen JSON nesnesinden karmaşık türde yeni bir sütun.

Örnekler

Örnek 1: JSON'yi belirtilen şemayla ayrıştırma

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

Örnek 2: DDL biçimli bir dize ile JSON ayrıştırma

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

Örnek 3: JSON'yi MapType'a Ayrıştırma

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

Örnek 4: JSON'yi StructType ArrayType'a Ayrıştırma

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

Örnek 5: JSON'yi ArrayType'a Ayrıştırma

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

Örnek 6: JSON'yi belirtilen seçeneklerle ayrıştırma

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