繁体   English   中英

Neo4j Cypher在Java中查询结果序列化

[英]Neo4j Cypher query results serialisation in Java

我正在构建一个您有帖子,回复等的Feed,我正在尝试获取特定Feed的限制数据集(在时间范围内等)。

我正在用Java调用这个查询,因为我想在某些任务中使用Java核心API,同时可以灵活地使用cypher进行更简单的查询。 有什么方法可以让我以JSON的形式直接传递回Web客户端。

START f=node:feeds(name='MY-FEED')                                     
MATCH (f)<-[:WRITTEN_TO]-(p)<-[:HAS_REPLIED_TO]-(r)<-[:HAS_PUBLISHED]-(ur)
WHERE p.datetime >= 201311261000 AND p.datetime <= 201311271000     
WITH p,collect({m:r.msg,u:ID(ur),dt:r.datetime})[0..2] as prgroup         
MATCH (pu)-[:HAS_PUBLISHED]->(p)<-[t:HAS_TAGGED]-(),                      
()-[l:HAS_LIKED]->(p)                                             
WITH p,pu,prgroup,collect(t.name) as tags,count(l) as likes       
return {                                                                 
    post:{                                                        
        msg:p.msg,                                                 
        id:ID(p),                                                  
        u:ID(pu),                                                  
        dt:p.datetime,                                             
        pin:p.pinned,                                              
        tags:tags,                                                 
        likes:likes                                                 
    },replies:prgroup                                                                                                                     
} as threads                                                      
order by p.pinned desc, p.updated desc                                    
SKIP 0                                                
limit 10                                                                  

在Java中(只生成格式错误的json):

ExecutionResult results = engine.execute(cql);
List<String> threads = new ArrayList<String>();
for (Map<String,Object> row : results) {
    for (Object val : row.values()) {
        threads.add(val.toString());
    }
}
return "["+Joiner.on(",").join(threads)+"]";

任何帮助将不胜感激。

两行:

Gson g = new GsonBuilder().setPrettyPrinting().create();
String json = g.toJson(IteratorUtil.asList(results.iterator()));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM