Navicat 不支持 JSONB 字段的图形化结构编辑,仅提供 DDL 层支持,无法展开、添加字段或校验 schema;数据编辑器显示简陋,无语法高亮与美化功能;高频操作建议改用 psql 或 VS Code + PostgreSQL 扩展。

Navicat 不支持 JSONB 字段的图形化结构编辑
Navicat for PostgreSQL 的「表设计」界面不提供 JSONB 字段的嵌套结构可视化编辑能力。你看到的只是 jsonb 类型占位符,无法展开、添加字段、设置约束或预览 schema —— 它被当作黑盒文本类型处理,而非结构化数据类型。
这不是版本问题,而是 Navicat 当前(截至 2026 年)对 PostgreSQL 原生 JSONB 的支持停留在 DDL 层:只允许你声明字段为 jsonb,不提供对象树式建模、示例值引导或 schema 校验。
建表时声明 JSONB 字段的正确写法
在 Navicat 表设计器中,必须手动输入类型并避免常见陷阱:
- 字段类型选
jsonb(不是json、text或留空);若下拉列表无此选项,说明连接的 PostgreSQL 版本 - 不要勾选「允许空值」以外的约束——Navicat 无法为
jsonb字段生成CHECK (col @? '$.user.id')这类路径表达式约束,需手写 SQL - 默认值若要设为空 JSON 对象,必须填
'{}'(带单引号),填{}或留空会导致建表失败 - 注释可写,但 Navicat 不会将其渲染为文档提示;后续需靠
COMMENT ON COLUMN单独维护
验证和调试 JSONB 结构只能靠 SQL 查询
想确认字段是否含预期结构、是否存在缺失键或类型错乱,必须离开图形界面,进查询窗口执行验证语句:
- 查某条记录的顶层键:
SELECT jsonb_object_keys(your_column) FROM your_table LIMIT 1; - 检查必有字段是否存在:
SELECT * FROM your_table WHERE NOT (your_column ? 'user'); - 提取嵌套值并防 NULL:
SELECT your_column->'user'->>'id' AS user_id FROM your_table;(注意->>返回 text,->返回 jsonb) - 用
jsonb_path_exists()做复杂断言(PostgreSQL 12+):WHERE jsonb_path_exists(your_column, '$.user.settings ? (@.theme == "dark")');
Navicat 的「数据编辑器」能显示 JSONB 值,但折叠/展开体验简陋,不支持语法高亮或格式化;右键单元格也无「美化 JSON」快捷菜单。
替代方案:用 psql 或 VS Code + PostgreSQL 扩展补位
如果你高频操作 JSONB 结构,Navicat 不是主力工具,它适合做快速查看和基础 CRUD。真正需要设计、校验、生成样例数据时,建议切换场景:
- 本地开发用
psql:粘贴长 JSONB 值时自动缩进,\set PROMPT1 '%n@%m:%> %x%# '配合jsonb_pretty()函数即时格式化 - VS Code 装「PostgreSQL」扩展(如 Chris Kolkman 版):支持 JSONB 字段双击展开、悬停提示类型、Ctrl+Space 补全
->和#>操作符 - 用
jsonschema工具生成 DDL 注释:把你的 JSON Schema 导出为COMMENT语句,再粘进 Navicat 执行,至少让团队成员看到结构说明
Navicat 的定位是数据库通用管理,不是 JSON 专用 IDE。它不会在表设计器里给你画一棵 JSON 树,也不会阻止你往 jsonb 字段塞一串乱码字符串——这是能力边界,不是 bug。


















