【发布时间】:2021-03-31 01:03:53
【问题描述】:
我有一些 JSON 数据存储在一个列中。我想解析 json 数据并针对特定键提取所有值。
这是我的示例数据:
{
"fragments": [
{
"fragments": [
{
"fragments": [
{
"fragments": [],
"fragmentName": "D"
},
{
"fragments": [],
"fragmentName": "E"
},
{
"fragments": [],
"fragmentName": "F"
}
],
"fragmentName": "C"
}
],
"fragmentName": "B"
}
],
"fragmentName": "A"
}
预期输出:
D, E, F, C, B, A
我想从上面的 JSON 中提取所有的 fragmentName 值。
我浏览了以下堆栈,但没有发现任何有用的东西: Collect Recursive JSON Keys In Postgres Postgres recursive query with row_to_json
已编辑:
这是我在上述堆栈上尝试过的一种方法:
WITH RECURSIVE key_and_value_recursive(key, value) AS (
SELECT
t.key,
t.value
FROM temp_frg_mapping, json_each(temp_frg_mapping.info::json) AS t
WHERE id=2
UNION ALL
SELECT
t.key,
t.value
FROM key_and_value_recursive,
json_each(CASE
WHEN json_typeof(key_and_value_recursive.value) <> 'object' THEN '{}' :: JSON
ELSE key_and_value_recursive.value
END) AS t
)
SELECT *
FROM key_and_value_recursive;
仅获得 0 级嵌套。
【问题讨论】:
标签: sql arrays json postgresql recursive-query