繁体   English   中英

从嵌套的 json 对象创建 json 表

[英]Create json table from nested json object

我在表mytable json_s字段中有一个 json 结构,如下所示(这是一行的示例,会有很多相似的行)

{
 "100": {
         "1": [[2,3],2] ,
         "4": [[10], 0]
        },
 "102": {
         "7":[[5,6],5]
        }
}

我想将其转换为json_table以在不同的查询中进一步使用。 json表结构应该是这样的

field_a  |  field_b  | field_c  | 
 100     |    1      |   2      | 
 100     |    1      |   3      |
 100     |    4      |   10     |     
 102     |    7      |   5      | 
 102     |    7      |   6      | 

我试图从像其他许多问题的解决方案,但没有成功为止。 一个主要问题是我想在 json 列中分配未知的键,并且结构嵌套在两个级别。

编辑:字段映射的结构将是这样的

{ "field_a" : {
               "field_b" : [ ["field_c1", "field_c2",... ] , x]
               }}

意思是忽略x元素

SELECT jt1.field_a, 
       jt2.field_b,
       jt3.field_c
FROM t1
CROSS JOIN JSON_TABLE(JSON_KEYS(t1.data),
                      '$[*]' COLUMNS (field_a VARCHAR(255) PATH '$')) jt1
CROSS JOIN JSON_TABLE(JSON_KEYS(JSON_EXTRACT(t1.data, CONCAT('$."', jt1.field_a, '"'))),
                      '$[*]' COLUMNS (field_b VARCHAR(255) PATH '$')) jt2
CROSS JOIN JSON_TABLE(JSON_EXTRACT(t1.data, CONCAT('$."', jt1.field_a, '"."', jt2.field_b, '"')),
                      '$[0][*]' COLUMNS (field_c VARCHAR(255) PATH '$')) jt3

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=479b21bf8f8d46ede2a0e262618df62e

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM