加载 JSON
过程 APOC Core
apoc.load.jsonParams('urlOrBinary',{headers}, {payload}, $config) YIELD value
它从 JSON URL、RestAPI 端点 URL 或二进制源加载数据。
headers 和 payload 参数可用于执行 RestAPI 请求。如果起始 JSON 是 JSON 列表,该过程将返回多个值;如果是单个 JSON,则返回单个结果。
签名
apoc.load.jsonParams(urlOrKeyOrBinary :: ANY?, headers :: MAP?, payload :: STRING?, path = :: STRING?, config = {} :: MAP?) :: (value :: MAP?)
输入参数
| 名称 | 类型 | 默认 |
|---|---|---|
urlOrKeyOrBinary |
ANY? |
null |
headers |
MAP? |
null |
payload |
STRING? |
null |
path |
STRING? |
|
config |
MAP? |
{} |
从文件读取
默认情况下,禁止从文件系统导入。我们可以通过在 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 现在可以从文件系统的任何位置读取,因此在设置此属性之前,请确保这是您的意图。 |
使用示例
我们可以通过将 config 参数 method 设置为 POST 来向 JSON 端点执行 POST 请求。我们还将使用 apoc.convert.toJson(包含在 APOC 核心库中)从 Cypher map 构建 JSON 有效负载。
以下示例向 Neo4j 的搜索 API 发送 POST 请求
CALL apoc.load.jsonParams(
"/docs/search/",
{method: "POST"},
apoc.convert.toJson({query: "subquery", version: "4.0"})
);
| 值 |
|---|
{description: "CALL {} 子句用于计算返回某些值的子查询。", weight: 0.6460227966308594, title: "3.16. CALL {} (子查询) - 第 3 章. 子句", uri: "/docs/cypher-manual/4.0/clauses/call-subquery/"} |
{description: "本节提供了可与 Neo4j Fabric 一起使用的查询和 Cypher 命令示例。", weight: 0.05099273845553398, title: "7.3. 查询 - 第 7 章. Fabric", uri: "/docs/operations-manual/4.0/fabric/queries/"} |
{description: "WHERE 为 MATCH 或 OPTIONAL MATCH 子句中的模式添加约束,或过滤 WITH 子句的结果。", weight: 0.03291567042469978, title: "3.6. WHERE - 第 3 章. 子句", uri: "/docs/cypher-manual/4.0/clauses/where/"} |
{description: "本附录包含了编写 Cypher 查询时的推荐规范。", weight: 0.031550146639347076, title: "附录 A. Cypher 风格指南 - Neo4j Cypher 手册 v4.0", uri: "/docs/cypher-manual/4.0/styleguide/"} |
{description: "本节包含了有关 Cypher 查询语言中所有子句的信息。", weight: 0.02944066934287548, title: "第 3 章. 子句 - Neo4j Cypher 手册 v4.0", uri: "/docs/cypher-manual/4.0/clauses/"} |
{description: "", weight: 0.01821548491716385, title: "2.3. 表达式 - 第 2 章. 语法", uri: "/docs/cypher-manual/4.0/syntax/expressions/"} |