MySQL-解析json字符串及JSON数组「终于解决」

编程文档 (60) 2023-08-12 14:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说MySQL-解析json字符串及JSON数组「终于解决」,希望能够帮助你!!!。

MySQL从5.7开始支持对于JSON的的各种操作,本文基于MySQL5.7.35-log版本演示。

查询MySQL版本的命令

select version();

MySQL-解析json字符串及JSON数组「终于解决」_https://bianchenghao6.com/blog_编程文档_第1张

JSON示例

以下为jSON串示例:

JSON对象

{
    "id":1,
    "name":"张三",
    "age":18
}

JSON数组

[
    {
        "id":1,
        "name":"张三",
        "age":18
    },
    {
        "id":2,
        "name":"李四",
        "age":20
    },
    {
        "id":3,
        "name":"王五",
        "age":23
    }
]

提取JSON的key

JSON_KEYS函数用于提取JSON的key值,具体用法如下:

SELECT JSON_KEYS('{"id":1,"name":"张三","age":18}') AS `keys`;

结果:
MySQL-解析json字符串及JSON数组「终于解决」_https://bianchenghao6.com/blog_编程文档_第2张

提取JSON的值

JSON_EXTRACT函数用于提取JSON的值,具体用法如下:

提取JSON对象,单个key的值
通过$.key取单个值

SELECT JSON_EXTRACT('{"id":1,"name":"张三","age":18}', '$.name') AS `name`;

结果:
MySQL-解析json字符串及JSON数组「终于解决」_https://bianchenghao6.com/blog_编程文档_第3张

可以看到结果有引号,可以使用JSON_UNQUOTE函数对单个结果进行去引号操作。

SELECT JSON_UNQUOTE(JSON_EXTRACT('{"id":1,"name":"张三","age":18}', '$.name')) AS `name`;

结果:
MySQL-解析json字符串及JSON数组「终于解决」_https://bianchenghao6.com/blog_编程文档_第4张

提取JSON对象,所有key的值
通过$.*取所有值

SELECT JSON_EXTRACT('{"id":1,"name":"张三","age":18}', '$.*') AS `values`;

结果:
MySQL-解析json字符串及JSON数组「终于解决」_https://bianchenghao6.com/blog_编程文档_第5张

提取JSON数组的值

提取JSON数组值的方式与提取单个JSON对象值方式基本无异。只是取值上有所差别。
取值方式:数字表示索引,从0开始,*表示所有。常用取值方式如下:

$[0]  JSON数组第一个对象
$[*]  JSON数组所有对象
$[0].key  JSON数组第一个对象对应key的值
$[*].key  JOSN数组所有对象,对应key的值

以取出JSON数组中name的所有值为例:

SELECT JSON_EXTRACT('[{"id":1,"name":"张三","age":18},{"id":2,"name":"李四","age":20},{"id":3,"name":"王五","age":23}]', '$[*].name') AS `names`;

结果:
MySQL-解析json字符串及JSON数组「终于解决」_https://bianchenghao6.com/blog_编程文档_第6张


(完)

纸上得来终觉浅,绝知此事要躬行。

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

发表回复