从 JSON 数组中提取字段
Exracting Fields from JSON array
我的Table
create table i (a json)
插入:
insert into i values ('[[1300,[{"id":5,"time":1451423706048,"zon":0,"name":"AMighty","loc":"ny"},[[3405,0,1000],[35,0,1000],[3401,0,10000],[2541,0,1000]]]]]' )
我希望提取 2541 之后的字段。在这种情况下答案为 0
当查询我的 Json 时:
select json_array_elements(a) from I
它returns只有一行。
您需要遍历所有嵌套数组以获取必要的元素:
WITH i(a) AS ( VALUES
('[[1300,[{"id":5,"time":1451423706048,"zon":0,"name":"AMighty","loc":"ny"},[[3405,0,1000],[35,0,1000],[3401,0,10000],[2541,0,1000]]]]]'::JSON)
)
SELECT
array_element->1->1->3 as array_you_look_for,
array_element->1->1->3->1 as inner_array_element
FROM i,
json_array_elements(a) as array_element;
输出:
array_you_look_for | inner_array_element
--------------------+---------------------
[2541,0,1000] | 0
(1 row)
我的Table
create table i (a json)
插入:
insert into i values ('[[1300,[{"id":5,"time":1451423706048,"zon":0,"name":"AMighty","loc":"ny"},[[3405,0,1000],[35,0,1000],[3401,0,10000],[2541,0,1000]]]]]' )
我希望提取 2541 之后的字段。在这种情况下答案为 0
当查询我的 Json 时:
select json_array_elements(a) from I
它returns只有一行。
您需要遍历所有嵌套数组以获取必要的元素:
WITH i(a) AS ( VALUES
('[[1300,[{"id":5,"time":1451423706048,"zon":0,"name":"AMighty","loc":"ny"},[[3405,0,1000],[35,0,1000],[3401,0,10000],[2541,0,1000]]]]]'::JSON)
)
SELECT
array_element->1->1->3 as array_you_look_for,
array_element->1->1->3->1 as inner_array_element
FROM i,
json_array_elements(a) as array_element;
输出:
array_you_look_for | inner_array_element
--------------------+---------------------
[2541,0,1000] | 0
(1 row)