navicat的json树状编辑器仅在表数据视图中对json类型字段可用,需右键单元格选择“编辑 json”;text/varchar字段即使存json字符串也不触发。

JSON树状编辑器在哪找
Navicat 的 JSON 编辑功能只在「表数据」视图中可用,且仅对 JSON 类型字段生效。右键点击该字段单元格 → 选择「编辑 JSON」,才会弹出树状结构编辑器;直接双击或按 Enter 默认进入文本模式(纯字符串编辑),容易误改格式导致解析失败。
注意:TEXT 或 VARCHAR 字段即使存了 JSON 字符串,也不会触发树状编辑器——Navicat 不做内容识别,只认列类型。
修改嵌套对象或数组时的常见错误
树状编辑器看似直观,但实际操作中容易破坏结构合法性:
- 拖拽节点调整顺序时,若目标位置不支持(比如把对象子项拖进数组末尾以外的位置),松手后编辑器可能静默失败,表面没报错但保存后字段变空或报
Invalid JSON text
- 新增数组元素必须点「+」号按钮,不能手动在末尾加逗号再换行——编辑器会忽略手输的逗号,导致语法错误
- 删除某个 key 后,如果其父对象只剩一个属性,编辑器有时会自动转成单行格式,但缩进或引号风格变化可能引发应用层解析兼容性问题(尤其 Python
json.loads() 对尾随逗号敏感)
保存前必须验证 JSON 合法性
Navicat 不会在点击「确定」时实时校验 JSON 结构,而是等到执行 UPDATE 语句时才由 MySQL 服务端抛错,此时已跳出编辑器,需重新打开。
Invalid JSON text
json.loads() 对尾随逗号敏感)建议操作流程:
- 编辑完成后,先点编辑器右上角的「格式化」按钮(图标为
{}),强制标准化缩进和引号 - 再点「验证」按钮(图标为
✓),确认提示「Valid JSON」再关闭 - 如果字段值较大,可复制到外部工具(如
jq或在线 JSONLint)二次校验,避免 MySQL 报JSON document may not contain NULL members这类底层错误
UPDATE 语句执行后的隐式行为
用树状编辑器保存后,Navicat 实际发送的是标准 SQL UPDATE,但有两点易被忽略:
- 如果原 JSON 字段为
NULL,编辑器会初始化为 {},而非保持 NULL —— 这可能影响业务逻辑中对空值的判断
- MySQL 8.0+ 对 JSON 值自动去重键名、排序对象 key,所以即使你在编辑器里调换了
"name" 和 "id" 的顺序,保存后查出来顺序可能不同,这不是 Navicat 的 bug,是 MySQL JSON 列的固有归一化行为
树状编辑器省事,但 JSON 的结构敏感性和数据库层归一化规则,比看起来更咬人。改完别急着关窗口,多看一眼验证结果和实际 SELECT 出来的值。
NULL,编辑器会初始化为 {},而非保持 NULL —— 这可能影响业务逻辑中对空值的判断"name" 和 "id" 的顺序,保存后查出来顺序可能不同,这不是 Navicat 的 bug,是 MySQL JSON 列的固有归一化行为











