如何将大型JSON文件导入Neo4j?APOC导入报错求助
问题解决:APOC导入双层数组JSON报错
错误原因
你使用的apoc.import.json默认期望顶层是单个JSON对象或单层对象数组,但你的JSON是双层嵌套数组([[{...}]]),Jackson解析器无法将数组类型反序列化为预期的LinkedHashMap,因此抛出类型不匹配错误。
解决方案
方案1:修改JSON结构(推荐,若允许修改文件)
直接移除最外层的数组包裹,将JSON顶层改为单层对象数组,比如从:
[[{ "id" : "149715690143449899009", "objectType" : "activity", "actor" : { // ... } }]]
改为:
[{ "id" : "149715690143449899009", "objectType" : "activity", "actor" : { // ... } }]
修改后即可正常使用CALL apoc.import.json("file:///eight9.json")导入。
方案2:不修改JSON,用apoc.load.json手动处理嵌套层级
如果无法修改JSON文件,使用apoc.load.json加载整个JSON结构,再通过UNWIND逐层提取数据,示例代码:
// 加载JSON文件 CALL apoc.load.json("file:///eight9.json") YIELD value // 展开外层数组 UNWIND value AS outerArray // 展开内层的活动对象数组 UNWIND outerArray AS activityData // 创建Activity节点 CREATE (a:Activity {id: activityData.id, objectType: activityData.objectType}) // 处理actor关联(示例,根据你的实际数据结构调整) WITH a, activityData.actor AS actorData MERGE (actor:Actor {id: actorData.id}) MERGE (a)-[:ACTED_BY]->(actor)
apoc.load.json支持任意JSON结构,适合处理非标准格式的嵌套数据,你可以根据实际的JSON字段扩展节点属性和关系创建逻辑。
内容的提问来源于stack exchange,提问作者Mr_yassh
相关产品推荐
相关产品推荐

