Navicat 导出 JSON 必须为 array of objects 格式,常见错误包括非数组结构、BSON 二进制、未用数据库 JSON 函数序列化等;应使用 jsonb_pretty()、JSON_OBJECT、mongoexport 等确保标准 JSON 输出。
导出前必须确认 JSON 结构是 array of objects
navicat 只认 [{"id":1,"name":"alice"},{"id":2,"name":"bob"}] 这种格式,其他结构一律失败。如果你的原始数据是单个对象、嵌套在 {"data": [...]} 里,或带根键名,导入接口时会报错或只读一行。
常见错误现象:拖入文件后提示“0 行被导入”“字段映射为空”,其实是因为 Navicat 根本没解析到有效数组。
- 用
jsonlint.com或 VS Code 插件先验证 JSON 合法性 - 如果原始数据是
{"list": [...]},得用脚本提取list字段再保存为新文件 - 导出时别勾选“导出表结构”,否则开头混入
CREATE TABLE,JSON 解析直接崩
PostgreSQL 的 jsonb 字段必须用 jsonb_pretty() 包裹
直接 SELECT jsonb_column FROM table 导出,字段名没引号、中文乱码、换行符丢失——这不是数据问题,是 Navicat 把 jsonb 当普通 text 拼接了,没走 PostgreSQL 的 JSON 序列化逻辑。
正确做法是让数据库自己吐标准 JSON:
-
SELECT jsonb_pretty(jsonb_column) FROM table→ 输出带缩进、双引号、转义的合法文本 - 若需加外层包装:
SELECT jsonb_build_object('items', jsonb_agg(jsonb_pretty(jsonb_column))) FROM table - 导出前加
SET client_encoding = 'UTF8';,避免中文变成\u4f60\u597d或乱码
MongoDB 导出必须禁用 mongodump,改用 mongoexport
Navicat 界面上写的“导出为 JSON”,底层调用的是 mongodump,结果是 .bson 二进制文件,不是文本 JSON。你看到的“乱码”就是 BSON 流,mongoimport --type json 会直接报错。
基于三引擎设计,从微信文章、新闻和博客网页提取干净内容,支持标题作者日期元数据,多格式和批量处理。
真正能被接口消费的 JSON,必须走 mongoexport:
- 下载 MongoDB Database Tools,配置
mongoexport.exe路径到 Navicat 的 MongoExport 设置中 - 右键集合 → MongoExport → 勾选
Export as JSON(不是 BSON),输出路径写data.json - 如需数组格式(
[{},{}]),加参数--jsonArray;否则默认一行一文档,mongoimport --file data.json即可直导
MySQL 5.7.22+ 推荐用 JSON_ARRAYAGG + JSON_OBJECT 拼接
绕过 Navicat 导出逻辑最稳的方式:用 SQL 直接生成完整 JSON 字符串,复制粘贴即可。尤其适合字段少、结构固定、要快速交付接口数据的场景。
示例语句:
SELECT JSON_ARRAYAGG(
JSON_OBJECT(
'id', id,
'title', title,
'price', price,
'tags', JSON_EXTRACT(tags, '$')
)
) AS json_data
FROM products
WHERE status = 'active';
执行后结果是一整行 JSON 文本,复制出来就是标准接口响应体。注意:
-
JSON_EXTRACT用于保留原始 JSON 字段内容,避免被当字符串二次转义 - 字段值含单引号或换行符?
JSON_OBJECT自动处理,不用手写REPLACE() - 导出为文件时,选“导出查询结果”→“文本文件”,编码选 UTF-8,**取消 BOM**
jsonb_pretty、JSON_OBJECT)或命令行工具(mongoexport),而不是依赖 UI 上那个写着“JSON”的下拉菜单。

















