首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有任何关于JSON“数组路径”符号的文档?"jsonb#>{x,y,z}“

是否有任何关于JSON“数组路径”符号的文档?"jsonb#>{x,y,z}“
EN

Stack Overflow用户
提问于 2021-04-20 13:45:50
回答 2查看 44关注 0票数 2

我试图围绕用于在JSON blob中“选择”/“目标”键的“数组符号”(缺少更好的名称)收集信息。

我专门讨论的是'{a, b, c}'表示法,您可以在#>操作符中使用它。

Postgres文件给出了几个使用示例,如:

代码语言:javascript
运行
复制
'{"a": {"b":{"c": "foo"}}}'::json#>'{a,b}' // {"c": "foo"}

代码语言:javascript
运行
复制
'{"a": {"b": [1, 2]}}'::json#>'{a,b,1}' // 2

但是,除了这些非常基本的例子之外,没有任何东西。我甚至找不到这个API的正确名称。

以下是我的问题:

  • 你知道关于这个问题的适当文件吗?
  • 如果没有,您是否知道该API的任何特性超出了上面提到的两个非常简单的示例?(意思是:选择深键和选择数组索引)它会有任何不同的形状吗?

我们试图评估是否能够安全地将形状"{a, b, c}"的字符串解析为可以发送到Postgres驱动程序的["a", "b", "c"]数组。

谢谢你抽出时间回答我。干杯!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-20 23:31:31

您的问题似乎是关于数组输入语法,而不是#>运算符本身。PostgreSQL数组是一个通用特性,在JSON上下文之外的许多地方都使用。PostgreSQL数组已记录在案的输入语法。因为PostgreSQL知道#>在其RHS上接受一个字符串数组,所以它知道将构造看作一个字符串数组,而不需要添加强制转换。还有其他方法,例如,您可以用'{a,b,1}'替换ARRAY['a','b','1']

许多驱动程序将提供一种将数组(或数组引用)直接绑定到单个占位符的方法。要想具体地帮助您的司机,您需要识别它。

票数 1
EN

Stack Overflow用户

发布于 2021-04-20 13:58:39

这没有“名称”,因为这完全是由Postgres开发人员“捏造”的。

#> (或#>>)运算符只是链接多个->运算符的缩写。

所以

代码语言:javascript
运行
复制
'{"a": {"b": [1, 2]}}'::jsonb  #> '{a,b,1}'

是相同的

代码语言:javascript
运行
复制
(('{"a": {"b": [1, 2]}}'::jsonb -> 'a') -> 'b') -> 1

括号并不是真正必要的,我只是添加了它们,以使第二个->更明显地使用第一个->的结果

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67180223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档