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

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 这个路径。

http://www.xdnf.cn/news/5522.html

相关文章:

  • Express知识框架
  • Linux常用命令详解(下):打包压缩、文本编辑与查找命令
  • C++GO语言微服务之Dockerfile docker-compose
  • 手机换地方ip地址会变化吗?深入解析
  • CSS3 伪元素(Pseudo-elements)大全
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(二十二)
  • 【25软考网工】第六章(4)VPN虚拟专用网 L2TP、PPTP、PPP认证方式;IPSec、GRE
  • USB传输模式
  • 大语言模型强化学习双强:OpenRLHF与verl技术解析
  • Golang空接口的用途详解
  • pnpm使用报错
  • TWASandGWAS中GBS filtering and GWAS(1)
  • 黑马点评实战笔记
  • AI赋能安全生产,推进数智化转型的智慧油站开源了。
  • BUUCTF——PYWebsite
  • 记一种C#winform小程序的简易打包方式-自解压压缩文件
  • 火山RTC 7 获得远端裸数据
  • MATLAB机器人系统工具箱中的loadrobot和importrobot
  • Voice Changer 变声器
  • C++语法基础(上)
  • linux内核pinctrl/gpio子系统驱动笔记
  • 并行发起http请求
  • Spring Cloud : OpenFeign(远程调用)
  • 腾答知识竞赛系统 V1.0.4更新
  • Linux文件编程——open函数
  • CAPL -实现SPRMIB功能验证
  • 《操作系统真象还原》第十四章(1)——文件系统概念、创建文件系统
  • 写屏障和读屏障的区别是什么?
  • 思维链是仅仅通过提示词实现的吗
  • Java对象的内存分布(二)