java - Neo4j Cypher 结果为 JSON : Getting JsonMappingException when using JsonHelper. createJsonFrom() 但仅限于某些查询

标签 java neo4j jackson vert.x

我正在开发 neo4vertx,这是一个可以使用 Vert.x 与 Neo4j 数据库进行通信的模块。具体来说,我正在开发名为“查询”的功能,该功能允许 Vert.x 用户 以 eventbus 消息的形式发送 Cypher 查询并返回 JSON 结果集。

但是,在使用 JsonHelper.createJsonFrom() 和某些查询序列化为 JSON 时,我似乎遇到了意外的问题。

一个简单的例子(当然数据库里有东西):

// This Fails with JsonMappingException (see below):
String query="MATCH (n) RETURN n";

// This Succeeds:
String query="MATCH (n) RETURN n.something";

//Rest of code:
engine = new ExecutionEngine(graphDatabaseService);
ExecutionResult result;
result = engine.execute(query);

Object object = result.iterator();
String foo = JsonHelper.createJsonFrom(object);
System.out.println("DEBUG (foo): " + foo);

有人觉得这很熟悉吗?我们本质上希望能够 发送任何类型的查询并返回空 json 字符串或 json 表示形式与您可以从 Neo4j 的 Web 界面!

异常(exception):

testQuery(org.openpcf.neo4vertx.neo4j.Neo4jGraphTest)  Time elapsed: 2.362 sec  <<< ERROR!
org.neo4j.server.rest.domain.JsonBuildRuntimeException: org.codehaus.jackson.map.JsonMappingException: No serializer found for class org.neo4j.kernel.InternalAbstractGraphDatabase$DependencyResolverImpl and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: scala.collection.convert.MapWrapper["content"]->org.neo4j.kernel.impl.core.NodeProxy["graphDatabase"]->org.neo4j.test.["dependencyResolver"])

...

最佳答案

尽管 ExecutionResult 是 Iterator<Map<String,Object>> 的实现它目前只是 scala 类以及 Neo4j 类(如节点、关系、路径)的 java 包装器。

所以你可能需要做两件事:

  1. 用适当的映射和列表递归替换 neo4j 类
  2. 可能:用 java 列表和映射递归替换 scala 列表和映射,例如new LinkedHashMap(row)

我不久前在我的 cypher-websocket-experiments 中做了一些这样的事情。

关于java - Neo4j Cypher 结果为 JSON : Getting JsonMappingException when using JsonHelper. createJsonFrom() 但仅限于某些查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25141511/

相关文章:

java - 如何迭代图中的所有节点?

neo4j - 查找只有一个 Edge 的 neo4j 节点详细信息

java - Spring Data Neo4J 中是否有 Multi-Tenancy 数据源

java - jackson : Converting JSON property to nested Object with Dot Notation

java - 查询特定联系人的未读文本 Android

java - Java java.util.concurrent.locks.Lock 如何保证线程之间的内存同步?

java - Neo4J 事务性 REST api 字符串转义不起作用

jackson - Jackson:将字符串数组反序列化为List <T>

java - JSON 具有与不同数据类型的键相同的名称

java - 我可以向 JPanel 添加 ActionListener