Neo4j通过APOC导出全库JSON时jsonFormat配置不生效如何解决
APOC 导出JSON格式切换失效问题
问题现象
- 使用基础语句可正常导出JSONL格式文件:
CALL apoc.export.json.all("all.json",{useTypes:true}) - 尝试按照文档说明配置导出格式时,无论传入何种格式参数,导出结果始终保持默认JSONL格式,预期失效写法为:
CALL apoc.export.json.all("all.json",{config:{jsonFormat:'ARRAY_JSON'}}) - 参考社区同类问题的排查方案操作后,仍无法切换为ARRAY_JSON、JSON、JSON_ID_AS_KEYS等其他可用导出格式。
问题根因
传入的配置参数存在嵌套层级错误,是APOC导出类过程的高频踩坑点:
APOC 导出系列过程的方法定义为(导出文件路径, 配置参数集合),第二个入参本身就是直接生效的配置Map,不需要在内部额外包裹一层config作为键名。
之前使用的嵌套写法,会被APOC识别为配置Map中存在一个无实际作用的config自定义键,jsonFormat参数被包裹在这个无效键的内部,根本无法被导出模块的配置读取逻辑识别,因此系统会始终使用默认的JSONL格式完成导出。
解决方法
去掉多余的config嵌套层级,将jsonFormat参数直接放到二级配置Map中即可,以导出ARRAY_JSON格式为例,正确的语句为:
CALL apoc.export.json.all("all.json", { useTypes: true, jsonFormat: 'ARRAY_JSON' })
补充注意事项
- 当前
jsonFormat支持的可选值及对应效果:JSONL:默认选项,逐行输出独立JSON对象的JSONL格式ARRAY_JSON:所有导出内容包裹在一个标准JSON数组中JSON:导出带元数据信息的完整标准JSON结构JSON_ID_AS_KEYS:以节点、关系的内部ID作为顶级键名输出JSON对象
- 若按照上述写法调整后仍不生效,需检查当前安装的APOC版本:
jsonFormat参数为APOC 4.1.0版本新增能力,低版本APOC不存在该配置的读取逻辑,会一直使用默认JSONL格式导出。
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

