是否存在用于JSON";阵列路径";符号"jsonb#>{x,y,z}"



我正试图收集有关;数组表示法";(因为没有更好的名字(;选择"/"目标";JSON blob中的键。

我特别讨论的是可以与#>运算符一起使用的'{a, b, c}'表示法。

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

'{"a": {"b":{"c": "foo"}}}'::json#>'{a,b}' // {"c": "foo"}

'{"a": {"b": [1, 2]}}'::json#>'{a,b,1}' // 2

但除了这些非常基本的例子之外,什么都没有。我甚至找不到这个API的正确名称。

以下是我的问题:

  • 你知道关于这个主题的任何合适的文件吗
  • 如果没有,除了上面提到的两个非常简单的例子之外,你还知道API的任何功能吗?(意思是:选择深键和选择数组索引(它可以是任何不同的形状吗

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

谢谢你花时间回答我。干杯

没有"name";因为这完全是";制成的";由Postgres开发人员开发。

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

所以

'{"a": {"b": [1, 2]}}'::jsonb  #> '{a,b,1}'

与相同

(('{"a": {"b": [1, 2]}}'::jsonb -> 'a') -> 'b') -> 1

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

您的问题似乎是关于数组输入语法,而不是#>操作员本身。PostgreSQL数组是一个通用特性,除了在JSON上下文中使用之外,它在许多地方都有使用。PostgreSQL数组的输入语法有文档记录。由于PostgreSQL知道#>在其RHS上获取一个字符串数组,它知道将该构造视为字符串数组,而无需添加强制转换。还有其他方法,例如,可以用ARRAY['a','b','1']替换'{a,b,1}'

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

相关内容

  • 没有找到相关文章

最新更新