使用 json_extract 查找 JSON 数组中的所有对象
Using json_extract to find in all objects in JSON array
如何使用json_extract遍历数组中的所有对象?如果您知道密钥,它就可以工作,但我想查看每个对象并找到匹配的对象。
$.features[0].properties.TMPRIV_ID
如何让它工作?
$.features[*].properties.TMPRIV_ID
你用 MySQL 和 Sqlite 标记了这个,所以我要掷硬币并给出 Sqlite 答案。
基本上,您需要 select 从 json_each()
行值函数迭代数组的每个元素,以及一个 where 子句来过滤您想要的内容(其中 json_extract()
发挥作用):
sqlite> SELECT value FROM
json_each('[{"name":"cat","type":"mammal"},{"name":"parrot","type":"bird"},{"name":"dog","type":"mammal"}]')
WHERE json_extract(value, '$.type') = 'mammal';
value
------------------------------
{"name":"cat","type":"mammal"}
{"name":"dog","type":"mammal"}
如果您希望结果作为 JSON 数组而不是一组行,请使用 json_group_array()
聚合函数:SELECT json_group_array(value) FROM ...
如何使用json_extract遍历数组中的所有对象?如果您知道密钥,它就可以工作,但我想查看每个对象并找到匹配的对象。
$.features[0].properties.TMPRIV_ID
如何让它工作?
$.features[*].properties.TMPRIV_ID
你用 MySQL 和 Sqlite 标记了这个,所以我要掷硬币并给出 Sqlite 答案。
基本上,您需要 select 从 json_each()
行值函数迭代数组的每个元素,以及一个 where 子句来过滤您想要的内容(其中 json_extract()
发挥作用):
sqlite> SELECT value FROM
json_each('[{"name":"cat","type":"mammal"},{"name":"parrot","type":"bird"},{"name":"dog","type":"mammal"}]')
WHERE json_extract(value, '$.type') = 'mammal';
value
------------------------------
{"name":"cat","type":"mammal"}
{"name":"dog","type":"mammal"}
如果您希望结果作为 JSON 数组而不是一组行,请使用 json_group_array()
聚合函数:SELECT json_group_array(value) FROM ...