加载 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?

{}

输出参数

名称 类型

MAP?

从文件读取

默认情况下,禁止从文件系统导入。我们可以通过在 apoc.conf 中设置以下属性来启用它

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.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"})
);
表 1. 结果

{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/"}

© . This site is unofficial and not affiliated with Neo4j, Inc.