有一个json,大致格式为
{“CAMERA_FL”: 81303, “LIDAR_FALCON”: 71349, “LIDAR_PROJECTED”: 71211}
想把它转为类似二维表的样式,例如有两列 名字分别为 device 和 num
device num
CAMERA_FL 81303
LIDAR_PROJECTED 71211
LIDAR_FALCON 71349
请问该怎么实现?
感谢各位大佬 我自己没有说清楚 这里边的key是不确定的 不确定个数 不确定key是什么 就是说 下一个json中 可能会有100对kv, key也不一定是CAMERA_FL CAMERA_FL了 需要根据key自动的变更
我是咖啡哥
2
mysql> create table t_json(a json);
Query OK, 0 rows affected (1.04 sec)
mysql>
mysql> insert into t_json(a) values('{"CAMERA_FL":81303, "LIDAR_FALCON":71349, "LIDAR_PROJECTED":71211}');
Query OK, 1 row affected (0.02 sec)
mysql> select * from t_json;
+-----------------------------------------------------------------------+
| a |
+-----------------------------------------------------------------------+
| {"CAMERA_FL": 81303, "LIDAR_FALCON": 71349, "LIDAR_PROJECTED": 71211} |
+-----------------------------------------------------------------------+
1 row in set (0.01 sec)
mysql> select JSON_EXTRACT(a, "$.CAMERA_FL"),JSON_EXTRACT(a, "$.LIDAR_FALCON"),JSON_EXTRACT(a, "$.LIDAR_PROJECTED") from t_json;
+--------------------------------+-----------------------------------+--------------------------------------+
| JSON_EXTRACT(a, "$.CAMERA_FL") | JSON_EXTRACT(a, "$.LIDAR_FALCON") | JSON_EXTRACT(a, "$.LIDAR_PROJECTED") |
+--------------------------------+-----------------------------------+--------------------------------------+
| 81303 | 71349 | 71211 |
+--------------------------------+-----------------------------------+--------------------------------------+
1 row in set (0.00 sec)
mysql> select "CAMERA_FL" device ,JSON_EXTRACT(a, "$.CAMERA_FL") num from t_json
-> union all
-> select "LIDAR_FALCON" device ,JSON_EXTRACT(a, "$.LIDAR_FALCON") num from t_json
-> union all
-> select "LIDAR_PROJECTED" device ,JSON_EXTRACT(a, "$.LIDAR_PROJECTED") num from t_json;
+-----------------+-------+
| device | num |
+-----------------+-------+
| LIDAR_PROJECTED | 71211 |
| LIDAR_FALCON | 71349 |
| CAMERA_FL | 81303 |
+-----------------+-------+
3 rows in set (0.01 sec)
1 个赞
这个key是不定的 就是说 在这个json中 key有三个 CAMERA_FL LIDAR_FALCON LIDAR_PROJECTED,但是下一个json中 key可能会有100个 而且是100个其他值
Aric
(Jansu Dev)
9
还是搞到 python 之类的程序里转吧,有比较方便的函数。
key个数无法固定还是用还其语言比如python遍历后,提取要用的信息再保存入库吧,数据库层面比较费劲
zhanggame1
(Ti D Ber G I13ecx U)
12
如果用mysql JSON_TABLE函数可以搞出来,tidb目前不支持这个
system
(system)
关闭
13
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。