Skip to content

get_json_object()

Описание

Функция get_json_object() извлекает значение из JSON строки по указанному пути. Если путь не существует или JSON некорректен, возвращает NULL.

Параметры

  • column: Column - столбец с JSON строкой
  • path: String - путь к значению в формате JSONPath

Возвращаемое значение

Column - извлеченное значение или NULL

Пример использования

from pyspark.sql import SparkSession
from pyspark.sql.functions import get_json_object, col

# Создаем SparkSession
spark = SparkSession.builder.appName("get_json_object_example").getOrCreate()

# Создаем DataFrame с JSON строками
data = [
    ('{"name": "John", "age": 30, "address": {"city": "New York", "zip": 10001}}',),
    ('{"name": "Alice", "age": 25, "address": {"city": "Boston", "zip": 02108}}',),
    ('{"name": "Bob", "age": 35}',),  # Отсутствует address
    ('invalid json',)  # Некорректный JSON
]
df = spark.createDataFrame(data, ["json"])

# Извлекаем значения из JSON
result = df.select(
    "json",
    get_json_object(col("json"), "$.name").alias("name"),
    get_json_object(col("json"), "$.age").alias("age"),
    get_json_object(col("json"), "$.address.city").alias("city"),
    get_json_object(col("json"), "$.address.zip").alias("zip")
).show()

# Результат:
# +------------------------------------------------+-----+---+--------+-----+
# |                                            json| name|age|    city|  zip|
# +------------------------------------------------+-----+---+--------+-----+
# |{"name": "John", "age": 30, "address": {"cit...| John| 30|New York|10001|
# |{"name": "Alice", "age": 25, "address": {"ci...|Alice| 25|  Boston|02108|
# |                    {"name": "Bob", "age": 35}|  Bob| 35|    NULL| NULL|
# |                                   invalid json| NULL|NULL|    NULL| NULL|
# +------------------------------------------------+-----+---+--------+-----+

Примечания

  • Путь к значению указывается в формате JSONPath
  • Поддерживаются следующие операции JSONPath:
  • $ - корень документа
  • . - доступ к свойству
  • [] - доступ к элементу массива
  • * - все элементы
  • Для работы с JSON массивами используйте json_array_length()
  • Для получения ключей JSON объекта используйте json_object_keys()