使用PostgreSQL 9.5.5 给出以下示例列中的jsonb数据:
{
"item_id": "123456",
"action_information_1": [ {"value": "259", "action_type": "read"} ],
"action_information_2": [ {"value": "93", "action_type": "read"} ],
"action_information_3": [ {"value": "53", "action_type": "read"} ],
"action_information_4": [ {"value": "35", "action_type": "read"} ]
}
我很难以编程方式从'action_information_1'中提取'value',这将是259。
似乎语法与我见过的其他例子略有不同,上面的'''在'''前面有'''。
感谢任何帮助,谢谢
答案 0 :(得分:2)
如果您修复了JSON文档中的语法错误,则可以使用以下方法:
with test_data (doc) as (
values (
'{
"item_id": "123456",
"action_information_1": [{"value": "259", "action_type": "read"}],
"action_information_2": [{"value": "93", "action_type": "read"}],
"action_information_3": [{"value": "53", "action_type": "read"}],
"action_information_4": [{"value": "35", "action_type": "read"}]
}'::json
)
)
select doc -> 'action_information_1' -> 0 ->> 'value'
from test_data
doc -> 'action_information_1'
获取该密钥的数组,-> 0
返回第一个数组元素,然后->> 'value'
获取与密钥value
或者,可以使用以下方法将其写得更短:
select doc #> '{action_information_1,0}' ->> 'value'
from test_data