Neo4j:将 REST 调用输出转换为 JSON

Neo4j: Converting REST call output to JSON

我需要将 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, http://XXX.YY6.192.103:7474/db/data/node/452, http://XXX.YY6.192.103:7474/db/data/node/453]

我看不到实际数据(我得到的是 URL)。我很确定我在这里遗漏了一些东西。

我也想将输出转换为 JSON。

密码在我的浏览器界面中有效。

我看了很多关于这个的文章:

Java neo4j, REST and memory Neo4j Cypher: How to iterate over ExecutionResult result Converting ExecutionResult object to json

最后两个使用 EmbeddedDatabase,这在我的场景中可能是不可能的(因为 Neo 托管在另一个云中,因此使用 REST)。

谢谢。

试着理解你在做什么?您的查询根本没有意义。 也许您应该重新访问 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 驱动程序用于您尝试做的事情,实际上 return 您尝试转换为 JSON 的属性。