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

时间:2015-03-12 00:10:36

标签: rest neo4j

我需要将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/445http://XXX.YY6.192.103:7474/db/data/node/446http://XXX.YY6.192.103:7474/db/data/node/447http://XXX.YY6.192.103:7474/db/data/node/448http://XXX.YY6.192.103:7474/db/data/node/449http://XXX.YY6.192.103:7474/db/data/node/450http://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)。

感谢。

1 个答案:

答案 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的属性。