【发布时间】:2019-05-20 08:47:18
【问题描述】:
我使用的是 PostgreSQL 9.5.14,并且在表中有一个列,其中包含我需要解析其内容的 JSON 数组。
使用选择我可以看到JSON的结构是这样的:
SELECT rule_results from table limit 5;
结果:
[{"rule_key":"applicant_not_lived_outside_eu"},{"rule_key":"family_assets_exceed_limit"},{"rule_key":"owned_a_deed"}]
[]
[]
[{"rule_key":"family_category","details":"apply_with_parents_under_25"}]
[]
我无法创建 SQL 命令来为我提供 rule_key 键的值。
我尝试使用 postgresql 中 json-functions 的文档来找到解决方案 https://www.postgresql.org/docs/9.5/functions-json.html
SELECT rule_results::json->'rule_key' as results from table;
这只会给我空值。
SELECT jsonb_object_keys(rule_results::jsonb) from table;
这会导致错误消息“cannot call jsonb_object_keys on a scalar”,这似乎意味着查询仅限于单行。
这看起来很简单,一个包含键:值对的数组,但不知何故,答案让我难以理解。我将不胜感激。
【问题讨论】:
-
您期待什么结果?一行中的每个值?一个数组中的所有值?
-
我希望能够在一行中包含每个值。目前我正试图弄清楚如何获取数组内的密钥对。
标签: arrays json postgresql