我需要将cypher的输出转换为JSON。
这是我的代码段。
RestCypherQueryEngine rcqer=new RestCypherQueryEngine(restapi);
String nodeN = "MATCH n=(Company) WITH COLLECT(n) AS paths RETURN EXTRACT(k IN paths | LAST(nodes(k))) as lastNode";
final QueryResult<Map<String,Object>> queryResult = rcqer.query(searchQuery);
for(Map<String,Object> row:queryResult)
{
System.out.println((ArrayList)row.get("lastNode"));
}
输出:
[http://XXX.YY6.192.103:7474/db/data/node/445,http://XXX.YY6.192.103:7474/db/data/node/446,http://XXX.YY6.192.103:7474/db/data/node/447,http://XXX.YY6.192.103:7474/db/data/node/448,http://XXX.YY6.192.103:7474/db/data/node/449,http://XXX.YY6.192.103:7474/db/data/node/450,http://XXX.YY6.192.103:7474/db/data/node/451,{{3} },http://XXX.YY6.192.103:7474/db/data/node/452
我无法看到实际数据(我正在获取URL&#39; s)。我很确定我在这里遗漏了一些东西。
我还想将输出转换为JSON。
密码在我的浏览器界面中运行。
我看过各种各样的文章:
http://XXX.YY6.192.103:7474/db/data/node/453] Java neo4j, REST and memory Neo4j Cypher: How to iterate over ExecutionResult result
最后2个使用EmbeddedDatabase,这在我的场景中可能是不可能的(因为Neo托管在另一个云中,因此使用REST)。
感谢。
答案 0 :(得分:1)
试着了解你在做什么?你的查询根本没有意义。 也许您应该重新访问Cypher的在线课程:http://neo4j.com/online-course
MATCH n=(Company) WITH COLLECT(n) AS paths RETURN EXTRACT(k IN paths | LAST(nodes(k))) as lastNode
你可以这样做:
MATCH (c:Company) RETURN c
RestCypherQueryEngine rcqer=new RestCypherQueryEngine(restapi);
final QueryResult<Map<String,Object>> queryResult = rcqer.query(query);
for(Node node : queryResult.to(Node.class))
{
for (String prop : node.getPropertyKeys()) {
System.out.println(prop+" "+node.getProperty(prop));
}
}
我认为将JDBC驱动程序用于您尝试的操作会更好,并且实际上还会返回您尝试转换为JSON的属性。