APOC从CURL导入/提取JSON

时间:2019-02-26 19:18:49

标签: node.js json neo4j neo4j-apoc

问题描述:我想以某种方式使用apoc.load.json,即使用url作为变量而不是url或文件路径。原因是我将json作为CURL的一部分发送,因此我可以捕获它并保存到变量中,是否有一些解决方法?因为我需要这样的东西(不幸的是,它不起作用,因为它需要一些路径而不是变量):

var inputObject = req.body;
var jsonObject = JSON.stringify(inputObject);

.run('WITH $inputParam AS url CALL apoc.load.json(url) ...', {inputParam: jsonObject})

但这不是必须的,可能还有其他方法可以从curl中检索json数据。

卷曲,如果有帮助的话:

curl -s -H "Content-Type: application/json" -X POST -d'{"origin":[{"label":"Alcohol drinks", "tag":[], "type":"string", "xpath":[]}, {"label":"Wine", "tag":["red","white"], "type":"string", "xpath":["Alcohol drinks"]}, {"label":"Port wine", "tag":["Portugal","sweet","strong"], "type":"string", "xpath":["Alcohol drinks","Wine"]}, {"label":"Sandeman Cask 33", "tag":["red","expensive"], "type":"string", "xpath":["Alcohol drinks","Wine","Port wine"]}], "target":[{"label":"Drinks", "tag":[], "type":"string", "xpath":[]}, {"label":"Tea", "tag":["black", "green"], "type":"string", "xpath":["Drinks"]}, {"label":"Carbonated water", "tag":[], "type":"string", "xpath":["Drinks","Tea"]}, {"label":"Pepsi", "tag":["sweet","cheap"], "type":"string", "xpath":["Drinks","Tea","Carbonated water"]}]}' http://localhost:3000/ontology

我将不胜感激。预先谢谢你。

1 个答案:

答案 0 :(得分:0)

您不需要apoc.load.json函数。使用没有字符串转换的对象:

var inputObject = req.body;
session
  .run('UNWIND $inputParam.origin AS param MERGE(label:concept {name: param.label})', 
       {inputParam: inputObject});

或将列表作为参数传递:

var inputObject = req.body;
session
  .run('UNWIND $inputParam AS param MERGE(label:concept {name: param.label})', 
       {inputParam: inputObject.origin});

P.S。您需要更好地了解javascript中的对象是什么。