在 Postgresql 中枚举 JSON 个数组元素

Enumerate JSON Array Elements in Postgresql

有没有办法查询 jsonb 数组项及其在 postgresql 中枚举的顺序?

例如:

SELECT * FROM jsonb_array_elements('[1,2,[3,4]]'::jsonb)

结果:

value
1
2
[3, 4]

我想要这些结果:

key value
0   1
1   2
2   [3, 4]

因为我认为我可以安全地假设任何未明确排序的 select 语句都是无序的,所以我认为简单的 ROW_NUMBER() 在这种情况下不会可靠地工作。

运算符with ordinality将生成数组索引值:

SELECT idx, value
FROM jsonb_array_elements('[1,2,[3,4]]'::jsonb) with ordinality as t(value, idx)
order by idx