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()