apoc.load.jsonParams过程Cypher 5 中已弃用Cypher 25 中已移除
| 在 APOC 2025.06 版本中,此过程已被迁移至不受支持的 APOC Extended 库。这意味着如果您使用的是 APOC 2025.06 或更高版本,该过程在 Cypher 25 中将不可用,但仍可在 Cypher 5 中使用。有关更多信息,请参阅 APOC 和 Cypher 版本。 |
该存储过程名称中的“Params”是指在连接到给定 URL 时对 HTTP 请求的 headers(请求头)和 payload(负载)进行参数化,而不是指 Neo4j 的 $ 参数。 |
语法 |
|
||
描述 |
从 URL(例如 Web API)加载 JSON 文档。如果给定的 JSON 文档是 |
||
输入参数 |
名称 |
类型 |
描述 |
|
|
从中导入数据的文件名或二进制数据。请注意,URL 需要经过适当编码以符合 URI 标准。 |
|
|
|
连接到给定 URL 时使用的请求头。 |
|
|
|
连接到给定 URL 时发送的负载。 |
|
|
|
用于提取 JSON 文档特定子部分的 JSON 路径表达式(通过 JSONPath 表达式提取)。默认值为:``。 |
|
|
|
|
|
返回参数 |
名称 |
类型 |
描述 |
|
|
从给定文件加载的数据映射。 |
|
从文件读取
默认情况下,禁止从文件系统导入。我们可以通过在 apoc.conf 中设置以下属性来启用它
apoc.import.file.enabled=true
如果我们尝试在未先设置此属性的情况下使用任何导入过程,将会收到以下错误消息
Failed to invoke procedure: Caused by: java.lang.RuntimeException: Import from files not enabled, please set apoc.import.file.enabled=true in your apoc.conf |
导入文件从 import 目录读取,该目录由 server.directories.import 属性定义。这意味着我们提供的任何文件路径都是相对于此目录的。如果我们尝试从绝对路径(例如 /tmp/filename)读取,将会收到类似于以下的错误消息
Failed to invoke procedure: Caused by: java.lang.RuntimeException: Can’t read url or key file:/path/to/neo4j/import/tmp/filename as json: /path/to/neo4j//import/tmp/filename (No such file or directory) |
我们可以通过在 apoc.conf 中设置以下属性来启用从文件系统任意位置读取文件
apoc.import.file.use_neo4j_config=false
|
Neo4j 现在可以从文件系统的任何位置读取,因此在设置此属性之前,请确保这是您的意图。 |
使用示例
我们可以通过将配置参数 method 设置为 GET 来向 JSON 端点执行 GET 请求。
以下示例向 Wikipedia Action API 发起 GET 请求
CALL apoc.load.jsonParams(
"https://en.wikipedia.org/w/api.php?action=query&titles=Neo4j&format=json&formatversion=2",
{method: "GET"},
"",
"$.query.pages[0]"
) YIELD value
RETURN value
| 值 |
|---|
{ "title": "Neo4j", "ns": 0, "pageid": 25505874 } |
请注意,URL 需要进行适当编码。这可以通过 apoc.text.urlencode 来实现。
WITH apoc.text.urlencode("Auvergne-Rhône-Alpes") AS title
CALL apoc.load.jsonParams(
"https://en.wikipedia.org/w/api.php?action=query&titles="+title+"&format=json&formatversion=2",
{method: "GET"}, "", "$.query.pages[0]"
) YIELD value
RETURN value.title AS title, value.pageid AS pageid
| 标题 | pageid |
|---|---|
Auvergne-Rhône-Alpes" |
45093325 |