SparkSQL — get_json_object函数详解(解析 json)

发布于:2025-07-28 ⋅ 阅读:(15) ⋅ 点赞:(0)

SparkSQL — get_json_object函数详解

官网:
https://spark.apache.org/docs/latest/sql-ref-functions-builtin.html#json-functions

https://spark.apache.org/docs/latest/api/sql/index.html#get_json_object

在这里插入图片描述


在这里插入图片描述

  • 从一个 JSON 字符串中提取指定路径(path)的值
  • 返回值为 字符串类型(STRING)
  • 如果路径不存在或 JSON 格式不合法,返回 NULL

参数名 类型 说明
json_str STRING 合法的 JSON 字符串
path STRING JSON 的路径表达式(使用 $ 表示根,. 表示字段)

博主用“龙珠”这个经典 IP,来演示 get_json_object 的各种用法

在这里插入图片描述

1. 基础用法:提取 JSON 中的基本字段

-- 提取悟空的名字和技能
SELECT 
    get_json_object('{"name":"卡卡罗特", "skill":"龟派气功"}', '$.name') AS name,
    get_json_object('{"name":"卡卡罗特", "skill":"龟派气功"}', '$.skill') AS skill;

在这里插入图片描述

在这里插入图片描述


2. 嵌套字段提取:从嵌套 JSON 中提取数据

-- 提取悟饭的变身形态和战斗力
SELECT 
    get_json_object(
        '{"name":"比迪丽", "spouse":{"name":"悟饭", "form":"超级赛亚人", "power":500000}}', 
        '$.spouse.name'
    ) AS spouse_name,
    get_json_object(
        '{"name":"比迪丽", "spouse":{"name":"悟饭", "form":"超级赛亚人", "power":500000}}', 
        '$.spouse.form'
    ) AS spouse_form,
    get_json_object(
        '{"name":"比迪丽", "spouse":{"name":"悟饭", "form":"超级赛亚人", "power":500000}}', 
        '$.spouse.power'
    ) AS spouse_power;

在这里插入图片描述


3. 数组元素提取:从 JSON 数组中取元素

-- 提取特兰克斯的时间线
SELECT 
    get_json_object(
        '{"name":"特兰克斯", "timelines": ["未来世界", "主宇宙", "超时空"]}', 
        '$.timelines[0]'
    ) AS first_timeline,
    get_json_object(
        '{"name":"特兰克斯", "timelines": ["未来世界", "主宇宙", "超时空"]}', 
        '$.timelines[2]'
    ) AS third_timeline;

在这里插入图片描述


4. 错误处理示例:路径不存在返回 NULL

-- 尝试提取不存在的字段
SELECT 
    get_json_object(
        '{"name":"克林", "move":"狼牙风风拳"}', 
        '$.dragon_ball'
    ) AS dragon_ball;

在这里插入图片描述

tips:

用法 示例
提取基本字段 get_json_object(json, '$.name')
提取嵌套字段 get_json_object(json, '$.spouse.name')
提取数组元素 get_json_object(json, '$.hobbies[1]')
多字段提取 多个 get_json_object 并列使用
错误处理 返回 NULL,需检查路径和 JSON 合法性

整理不易 列位多多支持呀~

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到