[英]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.