MySQL 嵌套JSON解析
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解析相关推荐
- 多层嵌套json解析
多层嵌套json解析-- com.jayway.jsonpath.JsonPath public class FormDefineHelper {private FormDefineHelper() ...
- Hive中解析Json字段、json日志分析所用到的嵌套json解析
首先在百度搜索,json格式解析,将这段话变个格式看起来舒服. 然后,通过通过嵌套使用json函数解决.大概就是将内层的json字段当作一个整体,然后先将这个外层作为解析.在通过子查询使用方法,在外套 ...
- python解析多层嵌套json_Python爬虫解析多个嵌套JSON,多级,json
Python爬虫解析多级嵌套json 最近刚接触Python爬虫,正好最近肺炎在全国蔓延,所以准备从网站爬取肺炎实时数据,并解析自己想要的数据.获取json数据网址为 https://m.look.3 ...
- android的json数据解析,Android数据解析-JSON解析
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,基于JavaScript(Standard ECMA-262 3rd Edition - December ...
- java解析多层嵌套json字符串
java解析多层嵌套json字符串 java分别解析下面两个json字符串 package jansonDemo;import com.alibaba.fastjson.JSON; import co ...
- Json解析(Json集合,Json嵌套)
导入maven依赖: <dependency><groupId>net.sf.json-lib</groupId><artifactId>json-li ...
- mysql json_extract用法,【MySQL】json_extract解析json
MySQL5.7 json串如下: {"Data":{"List":[{"ID":"101010","NAME ...
- Flink CDC mongoDB 使用及Flink sql解析monggo中复杂嵌套JSON数据实现
需要实时采集MongoDB中的数据,所以考虑使用flink cdc mongodb,在flink cdc2.1版本后也支持了MongoDB的数据采集,是通过oplog. MongoDB中的存储数据的文 ...
- java 解析Json对象(嵌套json数组)
在这里我需要读取的是json数据中promote的img的url,name,shopPrice. 1.实体类 2.工具类Moblie_Utils根据url获取网络json格式数据 public c ...
最新文章
- 为什么不应该重写service方法?
- 生成release版本的Android系统
- ArcGIS Server .Net Web ADF体系结构
- JAVAWEB入门之Servlet相关配置
- list按照某个字段排序_恕我直言你可能真的不会java第7篇:像使用SQL一样排序集合
- Win7上Git安装及配置过程 [转]
- js基础--变量、数据类型、循环、判断、函数定义
- 13-union 、distinc、 join
- mysql-------流程控制结构
- java 进程和线程
- python requests 上传文件_Python 实现小程序云存储文件上传
- windows驱动 - IRQL
- C++中namespace detail或namespace internal的使用
- 背景图片虚化的效果的css样式的实现
- 3D世界 ORGE SceneManager GetStart
- echarts报表javascript插件简介
- Matlab——常用函数的用法总结(部分直接摘自mathwork,持续更新)
- flyingsaucer转换多个html,使用 itext、flying-saucer 实现html转PDF
- iPhone 15 高端版本万元起步;华为授权 OPPO 使用其 5G 技术;DeepMind 推出 AI 编剧|极客头条
- ps保存web格式,报“系统找不到指定路径”错误