将cypher查询结果(JSON)解析为Java对象

时间:2014-01-20 22:49:14

标签: java json rest neo4j cypher

我使用jersey / jackson堆栈通过REST api来处理neo4j数据库,但是我有一些问题如何解释结果。

如果我通过其ID(/ db / data / node / xxx)读取节点,则可以通过在响应上调用readEntity(MyDto.class)将结果映射到我的DTO。但是,不建议使用内部ID,并且各种用例需要按自定义属性进行查询。这里的密码发挥作用(/ db / data / cypher)。

假设一个节点存在属性“myid”且值为“1234”,我可以使用密码查询“MATCH(n {myid:1234})RETURN n”来获取它。结果是一个带有大量资源的JSON字符串,最终我想要的“数据”解组到一个java对象。使用ProcessingException(从输入流中读取错误实体)直接解组它会失败。我看不到允许迭代结果数据的API。

我的想法是定义某种带有属性“data”的通用包装类,将这个属性赋给unmarshaller,然后解开我的DTO。我想知道是否有更优雅的方法来做这件事,比如使用“RETURN n.data”(这不起作用)或类似的东西。是吗?

1 个答案:

答案 0 :(得分:3)

您应该查看neo4j 2.0,其中return n只返回属性映射。

我通常倾向于将结果反序列化为嵌套列表/映射(即让ObjectMapper读取到Object.class或Map.class)结构并直接从中获取data映射。

可能有一种方法可以告诉杰克逊忽略该数据字段的所有信息

如果你想要一个更好的演示文稿,你也可以查看我的cypher-rs project,它只返回有问题的数据,仅此而已。