从嵌套的JSON中查找JSON键的节点名称

问题描述 投票:0回答:1

我有以下 JSON 数据:

{"GrossORNet":"Net","Term":"Monthly","Tier":{"All":{"1":{"Max":"100000","Min":"1","Rate":"15","StartDate":"2021-02-01","EndDate":"2021-02-01"}}}}

以下查询:

SELECT json_extract('{"GrossORNet":"Net","Term":"Monthly","Tier":{"All":{"1":{"Max":"100000","Min":"1","Rate":"15","StartDate":"2021-02-01","EndDate":"2021-02-01"}}}}' , '$.Tier');

我可以获得 Tier 的值,但我需要“All”的输出,例如提取的 JSON 的第一个键名称。除了使用正则表达式之外,还有其他选择吗?

sql amazon-athena presto trino
1个回答
0
投票

这里可能的技巧之一是将 json 转换为地图并像使用地图一样使用它:

SELECT
    map_keys(cast(json_extract(
            '{"GrossORNet":"Net","Term":"Monthly","Tier":{"All":{"1":{"Max":"100000","Min":"1","Rate":"15","StartDate":"2021-02-01","EndDate":"2021-02-01"}}}}'
        , '$.Tier.All'
    ) as map(varchar, json)))[1];

输出:

 _col0
-------
 1
(1 row)
© www.soinside.com 2019 - 2024. All rights reserved.