MySQL自5.7之后开始支持json类型,相应的解析函数主要是json_extract()

查询MySQL版本

select version()

示例

示例json1

未经过转义的json串

{"l1":{"l1_1":["l1_1_1","l1_1_2"],"l1_2":{"l1_2_1":121,"l1_2_2":"122"}},"l2":{"l2_1":null,"l2_2":true,"l2_3":{}}}
示例json2

经过转义后的json串

{"t_key":"haha","t_value":"{\"id\":\"14\",\"timestamp\":1539768556,\"type\":1}","test":2}

通过json_extract()可以获取json里面value对于的值:

mysql> select json_extract(field1, '$.t_key') from table1;
+----------------------------------------+
| json_extract(field1, '$.t_key')        |
+----------------------------------------+
| "haha"                                 |
+----------------------------------------+
1 row in set (0.00 sec)
mysql> select json_extract(field1, '$.t_value') from table1;
+-------------------------------------------------------+
| json_extract(field1, '$.t_value')              |
+-------------------------------------------------------+
| "{\"id\":\"14\",\"timestamp\":1539768556,\"type\":1}" |
+-------------------------------------------------------+
1 row in set (0.00 sec)

如果想去除两侧引号,可以先做类型转换再做trim:

mysql> select trim(both '"' from cast(json_extract(field1, '$.t_value') as char)) from table1;
+----------------------------------------------------------------------------+
| trim(both '"' from cast(json_extract(field1, '$.t_value') as char)) |
+----------------------------------------------------------------------------+
| {\"id\":\"14\",\"timestamp\":1539768556,\"type\":1}                        |
+----------------------------------------------------------------------------+
1 row in set (0.00 sec)

如果要在MySQL中对解析后的json再进行解析,则需要加上json_unquote函数以去掉escape character:

mysql> select json_unquote(json_extract(field1, '$.t_value')) from table1;
+--------------------------------------------------------+
| json_unquote(json_extract(field1, '$.t_value')) |
+--------------------------------------------------------+
| {"id":"14","timestamp":1539768556,"type":1}            |
+--------------------------------------------------------+
1 row in set (0.00 sec)

如果要对解析过后的json继续解析,则在上一步基础上嵌套json_extract()

mysql> select json_extract(json_unquote(json_extract(field1, '$.t_value')), '$.timestamp') from table1;
+-------------------------------------------------------------------------------------+
| json_extract(json_unquote(json_extract(field1, '$.t_value')), '$.timestamp') |
+-------------------------------------------------------------------------------------+
| 1539768556                                                                          |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
JSON_UNQUOTE() Special Character Escape Sequences
Escape Sequence Character Represented by Sequence
\" A double quote (") character
\b A backspace character
\f A formfeed character
\n A newline (linefeed) character
\r A carriage return character
\t A tab character
\\ A backslash () character
\uXXXX UTF-8 bytes for Unicode value XXXX

json_extract的等效操作符是->;
json_unquote(json_extract())的等效操作符是->>;

参考资料1
参考资料2
参考资料3

MySQL 嵌套JSON解析相关推荐

  1. 多层嵌套json解析

    多层嵌套json解析-- com.jayway.jsonpath.JsonPath public class FormDefineHelper {private FormDefineHelper() ...

  2. Hive中解析Json字段、json日志分析所用到的嵌套json解析

    首先在百度搜索,json格式解析,将这段话变个格式看起来舒服. 然后,通过通过嵌套使用json函数解决.大概就是将内层的json字段当作一个整体,然后先将这个外层作为解析.在通过子查询使用方法,在外套 ...

  3. python解析多层嵌套json_Python爬虫解析多个嵌套JSON,多级,json

    Python爬虫解析多级嵌套json 最近刚接触Python爬虫,正好最近肺炎在全国蔓延,所以准备从网站爬取肺炎实时数据,并解析自己想要的数据.获取json数据网址为 https://m.look.3 ...

  4. android的json数据解析,Android数据解析-JSON解析

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,基于JavaScript(Standard ECMA-262 3rd Edition - December ...

  5. java解析多层嵌套json字符串

    java解析多层嵌套json字符串 java分别解析下面两个json字符串 package jansonDemo;import com.alibaba.fastjson.JSON; import co ...

  6. Json解析(Json集合,Json嵌套)

    导入maven依赖: <dependency><groupId>net.sf.json-lib</groupId><artifactId>json-li ...

  7. mysql json_extract用法,【MySQL】json_extract解析json

    MySQL5.7 json串如下: {"Data":{"List":[{"ID":"101010","NAME ...

  8. Flink CDC mongoDB 使用及Flink sql解析monggo中复杂嵌套JSON数据实现

    需要实时采集MongoDB中的数据,所以考虑使用flink cdc mongodb,在flink cdc2.1版本后也支持了MongoDB的数据采集,是通过oplog. MongoDB中的存储数据的文 ...

  9. java 解析Json对象(嵌套json数组)

    在这里我需要读取的是json数据中promote的img的url,name,shopPrice.  1.实体类  2.工具类Moblie_Utils根据url获取网络json格式数据 public c ...

最新文章

  1. 为什么不应该重写service方法?
  2. 生成release版本的Android系统
  3. ArcGIS Server .Net Web ADF体系结构
  4. JAVAWEB入门之Servlet相关配置
  5. list按照某个字段排序_恕我直言你可能真的不会java第7篇:像使用SQL一样排序集合
  6. Win7上Git安装及配置过程 [转]
  7. js基础--变量、数据类型、循环、判断、函数定义
  8. 13-union 、distinc、 join
  9. mysql-------流程控制结构
  10. java 进程和线程
  11. python requests 上传文件_Python 实现小程序云存储文件上传
  12. windows驱动 - IRQL
  13. C++中namespace detail或namespace internal的使用
  14. 背景图片虚化的效果的css样式的实现
  15. 3D世界 ORGE SceneManager GetStart
  16. echarts报表javascript插件简介
  17. Matlab——常用函数的用法总结(部分直接摘自mathwork,持续更新)
  18. flyingsaucer转换多个html,使用 itext、flying-saucer 实现html转PDF
  19. iPhone 15 高端版本万元起步;华为授权 OPPO 使用其 5G 技术;DeepMind 推出 AI 编剧|极客头条
  20. ps保存web格式,报“系统找不到指定路径”错误

热门文章

  1. elementUI select popper弹出方向
  2. 微信程序开发.小程序入门
  3. upload-labs 第6-20关
  4. python range()函数生成一组逆序值
  5. 非金属打包液压机卧式四柱液压机控制系统比例阀放大器
  6. 干货:一种基于SDN的服务器负载均衡方案
  7. FBA项目模块完结感想
  8. 多维分析前端页面卡顿不流畅怎么办
  9. matlab fni,一种基于MATLAB的车内语言清晰度自动计算方法与流程
  10. erpnext v13 安装部署 + VSCode本地开发环境配置