json - 使用 Postgres 查询访问 JSON 中的数组
问题描述
我有一张表data_type
,json
我需要查询其中的一个属性。
列中的数据如下所示:
{
"id": 7008,
"access_links": [
{
"product_code": "PRODUCT-1",
"link": "https://some.url"
},
{
"product_code": "PRODUCT-2",
"link": "https://someOther.url"
}
],
"library_id": "2d1203db-75b3-43a5-947c-8555b48371db"
}
我需要能够通过product_code
嵌套在access_links
.
我可以通过使用此查询获得一层深度:
SELECT
courses.course_metadata -> 'access_links' as access_links
FROM
courses
这似乎让我进入了专栏,但我无法进一步查询。
我从查询中收到的输出如下所示:
[{"product_code":"PRODUCT-1","link":"https://some.url"},{"product_code":"PRODUCT-2","link":"https://someOther.url"}]
我试过使用->>
and#>>
运算符,但他们都抱怨数组不是以{
. 另外值得注意的是,该列是JSON
not的数据类型JSONB
,因此@>
运算符不起作用。
我在这里想念什么?
解决方案
这有帮助吗?
select
json_array_elements (x->'access_links')->'product_code' as product_code
from
(select '{
"id": 7008,
"access_links": [
{
"product_code": "PRODUCT-1",
"link": "https://some.url"
},
{
"product_code": "PRODUCT-2",
"link": "https://someOther.url"
}
],
"library_id": "2d1203db-75b3-43a5-947c-8555b48371db"
}'::json x
) as v
;
产品代码
“产品-1”
“产品-2”
推荐阅读
- javascript - Chartjs,气泡图,数据标签中重复值的定位问题
- spring - 引起:java.lang.ClassNotFoundException:org.springframework.boot.actuate.health.StatusAggregator
- symfony - Symfony 3.1 作曲家冲突
- flutter - 如何拥有一个列表视图,其子项将包含在 Flutter 中
- python - Pandas/jsonl:如何在包含多个字符串的字符串中添加换行符?
- javascript - React Native 需要手动刷新 ctrl+s 才能显示数据
- authentication - 客户端私钥设置为客户端证书身份验证的一部分
- reactjs - 为什么我在新的 React 应用程序上得到一个白色/空白页面?
- c++ - 使用向量时 [] 运算符的问题
- javascript - 空格后的数字不会在 jquery 中发送