将ExecutionResult对象转换为json

时间:2014-03-24 18:49:53

标签: java neo4j gson cypher

我需要公开一个公共API,我需要将cypher查询的结果转换为json。我已经开始了这个过程,但是在序列化scala.collection.convert.Wrappers类型的对象时遇到问题。在cypher中使用collect()时会返回$ SeqWrapper。

这是密码查询:

MATCH (orders:Orders {id:'locationrestaurant'}), (order:Order),    (orders)-[:hasOrder]-(order),(order)-[:orderedProduct]->(product),(client)-[:ordered]->(order) return (order),(client), collect(product) as products;

我该如何处理这种类型的物体?我可以将它投射到列表中吗?还有,有没有用于将ExecutionResult转换为json的库?

如果您需要更多详情,请询问。这是我的代码

public QueryResult runCypher(String query, Map<String,Object> params)
{
    QueryResult result = new QueryResult();
    Transaction tx = service.beginTx();
    ExecutionResult execResult = null;
    boolean success = true;

    System.out.println(query);
    try
    {
        if(params!=null) execResult = engine.execute(query, params);
        else             execResult = engine.execute(query);
        result.result = getReturnedObjectsToJson(execResult);
    }
    catch(Exception e)
    {
        System.out.println(e.getMessage()+" exception message");
        result.result = e.getMessage();
        success = false;
    }
    finally
    {
        if(success) tx.success();
        else        tx.failure();
    }

    tx.close();

    result.success = success;

    return result;
}

基本上,getReturnedObjectsToJson可以完成工作。

2 个答案:

答案 0 :(得分:0)

我该如何处理这类对象?

data.get(&#34;标签&#34;)instanceof java.util.Collection

我可以将其投放到列表中吗?

此外,是否有用于将ExecutionResult转换为json的库?

ExecutionResult是可迭代的,我认为你可以使用任何流行的java json框架,例如gson或jackson

答案 1 :(得分:0)

您可以使用Jacksons数据绑定框架。这将允许您将其转回目的地的执行结果。

如果要从执行结果中获取实际图形,以便Json处于某种图形模式中。这是更多的工作。

我一直在编写一个库,它会将仲裁图解析成Cypher,并将执行结果反馈回图形以与虚拟查询构建器一起工作,这是相当困难的工作。希望它很快就能完成。 :)