当前位置: 首页 > news >正文

MySQL之GET_JSON_OBJECT函数

目录

  • 语法:GET_JSON_OBJECT(json_doc, path)
  • 示例
    • 提取简单 JSON 对象的属性值
    • 提取嵌套 JSON 对象的属性值
    • 提取 JSON 数组中的元素
    • 结合查询使用
    • 处理不存在的路径

GET_JSON_OBJECTMySQL 中用于从 JSON 字符串中提取特定数据的函数。以下是其详细介绍及示例:

语法:GET_JSON_OBJECT(json_doc, path)

  • json_doc:要解析的 JSON 格式的字符串。
  • path:使用 JSONPath 语法指定要提取的 JSON 数据的路径。

示例

提取简单 JSON 对象的属性值

SELECT GET_JSON_OBJECT('{"name": "Alice", "age": 30}', '$.name');

结果为:Alice。这里从一个简单的 JSON 对象中通过 $.name 路径获取了名为 name 的属性值。

SELECT GET_JSON_OBJECT('"Hello World"', '$');  -- 返回 "Hello World"

提取嵌套 JSON 对象的属性值

SELECT GET_JSON_OBJECT('{"person": {"name": "Alice", "address": {"city": "New York"}}}', '$.person.address.city');

结果为:New York。通过 $.person.address.city 路径,从嵌套的 JSON 对象中获取了 city 的值。

提取 JSON 数组中的元素

SELECT GET_JSON_OBJECT('{"students": [{"name": "Alice", "grade": 8}, {"name": "Bob", "grade": 9}]}', '$.students[0].name');

结果为:Alice$.students[0].name 表示获取 students 数组中第一个元素的 name 属性值。

-- 原始 JSON: ["apple", "banana", "cherry"]
SELECT GET_JSON_OBJECT('["apple", "banana", "cherry"]', '$[0]');  -- 返回 "apple"
SELECT GET_JSON_OBJECT('["apple", "banana", "cherry"]', '$[2]');  -- 返回 "cherry"

结合查询使用

假设有一个名为 users 的表,其中有一个 info 列存储 JSON 格式的数据,如下所示:

CREATE TABLE users (id INT PRIMARY KEY,info JSON
);INSERT INTO users (id, info) VALUES(1, '{"name": "Alice", "age": 30, "hobbies": ["reading", "painting"]}'),(2, '{"name": "Bob", "age": 25, "hobbies": ["sports", "music"]}');

可以使用 GET_JSON_OBJECT 函数在查询中提取 JSON 数据:

SELECT id, GET_JSON_OBJECT(info, '$.name') AS name, GET_JSON_OBJECT(info, '$.age') AS age
FROM users;

该查询会从 info 列的 JSON 数据中提取出 nameage 属性值,并与 id 一起展示。

处理不存在的路径

如果指定的 JSONPathJSON 文档中不存在,GET_JSON_OBJECT 函数将返回 NULL。例如:

SELECT GET_JSON_OBJECT('{"name": "Alice", "age": 30}', '$.address.city');

结果为 NULL,因为 JSON 文档中不存在 address.city 这个路径。

相关文章:

  • 七、基于HAL库,实现串口+DMA+状态机通信实现
  • 居逸JY02A无刷电机驱动芯片介绍
  • 获取高德地图JS API的安全密钥和Key的方法
  • dfs第二次加训 详细题解 下
  • k8s监控方案实践(三):部署与配置Grafana可视化平台
  • Spring Boot整合Kafka实战指南:从环境搭建到消息处理全解析
  • 【运维】MacOS蓝牙故障排查与修复指南
  • FreeRTOS的学习记录(基础知识)
  • STM32F103_LL库+寄存器学习笔记12.1 - 串口DMA高效收发实战:引入ringbuffer结构
  • [计算机网络]网络层
  • Matlab 模糊控制节水洗衣机模型
  • 中科院无人机导航物流配送的智能变革!LogisticsVLN:基于无人机视觉语言导航的低空终端配送系统
  • 9.渐入佳境 -- 套接字的多种可选项
  • iptables实现DDos
  • 计算频谱的方法
  • [Java实战]Spring Boot 整合 Session 共享(十七)
  • 什么是 NoSQL 数据库?它与关系型数据库 (RDBMS) 的主要区别是什么?
  • ros1+docker环境快速搭建
  • postgresql主从集群一键搭建脚本分享
  • 人工智能领域1-4区所有SCI汇总!
  • 多地警务新媒体整合:关停交警等系统账号,统一信息发布渠道
  • 福建宁德市长张永宁拟任设区市党委正职,曾获评全国优秀县委书记
  • 老人将房产遗赠给外孙,三个女儿却认为遗嘱应无效,法院判了
  • 尹锡悦涉嫌发动内乱案举行第三次庭审
  • 浙江首个核酸药谷落子杭州,欢迎订阅《浪尖周报》第23期
  • 印控克什米尔地区再次传出爆炸声