小编Rya*_*off的帖子

JSONB 到数组数据类型

我目前有一个带有列操作(JSONB)的表会话。

我能够使用array_to_jsonb(array value).

我的数组(数组值)的结构如下所示:

var arrayStructure = [
    {name: 'email client', check: false},
    {name: 'send contract', check: false}
]
Run Code Online (Sandbox Code Playgroud)

与我在 SO 上看到的许多关于修改 JSONB 或访问某些键的问题不同,我只对将整个 JSONB 数据转换回前端数组感兴趣。

我的临时解决方法是映射数组并在 Javascript 中使用 JSON.parse() 来重构数组中的每个对象。我不能在整个数组上使用 JSON.parse(),因为它会引发错误。

我正在寻找将数组格式恢复为存储的 JSONB 数据类型的查询。我见过 JSONB_SET、LATERAL 和 JSONB_ARRAY_ELEMENTS_TEXT。但不是以一种能够带回正确数组的方式。

开始为:名为 session 的表的操作列中的 JSONB

应该导致:返回所有行的查询,但操作列 (JSONB) 转换回前端的数组:

select session_id, session_name, someFunction or lateral here(actions) from sessions
Run Code Online (Sandbox Code Playgroud)

会话表的屏幕截图

我试过这样的查询:

SELECT 
   session_id, 
   actions::jsonb -> 'name' as name
FROM sessions;
Run Code Online (Sandbox Code Playgroud)

并收到返回 null 的名称。我试过 ->> 访问更深层次,但这也不起作用。

这是正确查询结果的一半:

select session_id, jsonb_array_elements_text(actions)
from sessions …
Run Code Online (Sandbox Code Playgroud)

sql arrays postgresql json jsonb

5
推荐指数
1
解决办法
7027
查看次数

标签 统计

arrays ×1

json ×1

jsonb ×1

postgresql ×1

sql ×1