GraphSON 基于 JSON,不支持将复杂对象转换为键。JSON 中的键必须是基于字符串的,并且在本例中不能是映射。为了解决这个 JSON 限制,GraphSON 通过 JavatoString()
或通过其他方法为某些对象(如图形元素)转换将成为键的复杂对象(它返回元素标识符的字符串表示,解释为什么你收到了你所做的输出) .
如果你想在使用 GraphSON 时返回元素的属性,你必须想出一个解决方法。在这种特定情况下,您可能会这样做:
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().group().
......1> by(id).
......2> by(union(__(), outE('knows').count()).fold())
==>[1:[v[1],2],2:[0,v[2]],3:[v[3],0],4:[0,v[4]],5:[v[5],0],6:[0,v[6]]]
通过这种方式,您将获得顶点标识符作为地图 ID,并在值中获得完整的顶点加上计数。TinkerPop 正在努力改善这个问题,但我不希望快速修复。