继续讨论自here.
我有一个提供路径列表以及 elementMap() 的查询。
如何将此数据转换为 JSON 以供其余代码使用。
我确实看过here谈到使用GraphSONMapper
。
但是,我正在使用gremlinpython
(v 3.6.1) 我找不到GraphSONMapper
和
图书馆。有graphsonV2d0.py
and graphsonV3d0.py
,但不清楚如何使用它。
示例图:
g.addV('color-group').property(id,1).property(single, 'Color', 'primary').next()
g.addV('primary-color').property(id,2).property(single, 'Color', 'red').next()
g.addV('primary-color').property(id,3).property(single, 'Color', 'blue').next()
g.addV('primary-color').property(id,4).property(single, 'Color', 'yellow').next()
g.addV('secondary-color').property(id,5).property(single, 'Color', 'red-10').next()
g.V(1).addE('links').to(V(2)).property(single, 'Key', 'value').next()
g.V(1).addE('links').to(V(3)).property(single, 'Key', 'value').next()
g.V(1).addE('links').to(V(4)).property(single, 'Key', 'value').next()
g.V(4).addE('links').to(V(5)).property(single, 'Key', 'value').next()
Query:
g.V().hasLabel('color-group').has('Color', 'primary').outE().inV().optional(outE().inV()).path().by(elementMap()).store('data').cap('data').next()
当前结果:
[path[{<T.id: 1>: 1, <T.label: 4>: 'color-group', 'Color': 'primary'}, {<T.id: 1>: 7, <T.label: 4>: 'links', <Direction.IN: 2>: {<T.id: 1>: 2, <T.label: 4>: 'primary-color'}, <Direction.OUT: 3>: {<T.id: 1>: 1, <T.label: 4>: 'color-group'}, 'Key': 'value'}, {<T.id: 1>: 2, <T.label: 4>: 'primary-color', 'Color': 'red'}], path[{<T.id: 1>: 1, <T.label: 4>: 'color-group', 'Color': 'primary'}, {<T.id: 1>: 8, <T.label: 4>: 'links', <Direction.IN: 2>: {<T.id: 1>: 3, <T.label: 4>: 'primary-color'}, <Direction.OUT: 3>: {<T.id: 1>: 1, <T.label: 4>: 'color-group'}, 'Key': 'value'}, {<T.id: 1>: 3, <T.label: 4>: 'primary-color', 'Color': 'blue'}], path[{<T.id: 1>: 1, <T.label: 4>: 'color-group', 'Color': 'primary'}, {<T.id: 1>: 9, <T.label: 4>: 'links', <Direction.IN: 2>: {<T.id: 1>: 4, <T.label: 4>: 'primary-color'}, <Direction.OUT: 3>: {<T.id: 1>: 1, <T.label: 4>: 'color-group'}, 'Key': 'value'}, {<T.id: 1>: 4, <T.label: 4>: 'primary-color', 'Color': 'yellow'}, {<T.id: 1>: 10, <T.label: 4>: 'links', <Direction.IN: 2>: {<T.id: 1>: 5, <T.label: 4>: 'secondary-color'}, <Direction.OUT: 3>: {<T.id: 1>: 4, <T.label: 4>: 'primary-color'}, 'Key': 'value'}, {<T.id: 1>: 5, <T.label: 4>: 'secondary-color', 'Color': 'red-10'}]]
如何转换上面的内容以获得以下 JSON 格式的输出?
截断的休息与模式相同。
[[{
"< T.id: 1 >": 1,
"< T.label: 4 >": "color-group",
"Color": "primary"
}, {
"< T.id: 1 >": 7,
"< T.label: 4 >": "links",
"< Direction.IN: 2 >": {
"< T.id: 1 >": 2,
"< T.label: 4 >": "primary-color"
},
"< Direction.OUT: 3 >": {
"< T.id: 1 >": 1,
"< T.label: 4 >": "color-group"
},
"Key": "value"
}, {
"< T.id: 1 >": 2,
"< T.label: 4 >": "primary-color",
"Color": "red"
}], ..... ]
EDIT 1.
我使用 graphsonV3d0 取得了一些进展
from gremlin_python.structure.io import graphsonV3d0
obj = graphsonV3d0.GraphSONWriter()
query = g.V().hasLabel('color-group').has('Color', 'primary').outE().inV().optional(outE().inV()).path().by(elementMap()).store('data').cap('data').next()
obj.to_dict(query)
Result:
{'@type': 'g:List', '@value': [path[{<T.id: 1>: 1, <T.label: 4>: 'color-group', 'Color': 'primary'}, {<T.id: 1>: 7, <T.label: 4>: 'links', <Direction.IN: 2>: {<T.id: 1>: 2, <T.label: 4>: 'primary-color'}, <Direction.OUT: 3>: {<T.id: 1>: 1, <T.label: 4>: 'color-group'}, 'Key': 'value'}, {<T.id: 1>: 2, <T.label: 4>: 'primary-color', 'Color': 'red'}], path[{<T.id: 1>: 1, <T.label: 4>: 'color-group', 'Color': 'primary'}, {<T.id: 1>: 8, <T.label: 4>: 'links', <Direction.IN: 2>: {<T.id: 1>: 3, <T.label: 4>: 'primary-color'}, <Direction.OUT: 3>: {<T.id: 1>: 1, <T.label: 4>: 'color-group'}, 'Key': 'value'}, {<T.id: 1>: 3, <T.label: 4>: 'primary-color', 'Color': 'blue'}], path[{<T.id: 1>: 1, <T.label: 4>: 'color-group', 'Color': 'primary'}, {<T.id: 1>: 9, <T.label: 4>: 'links', <Direction.IN: 2>: {<T.id: 1>: 4, <T.label: 4>: 'primary-color'}, <Direction.OUT: 3>: {<T.id: 1>: 1, <T.label: 4>: 'color-group'}, 'Key': 'value'}, {<T.id: 1>: 4, <T.label: 4>: 'primary-color', 'Color': 'yellow'}, {<T.id: 1>: 10, <T.label: 4>: 'links', <Direction.IN: 2>: {<T.id: 1>: 5, <T.label: 4>: 'secondary-color'}, <Direction.OUT: 3>: {<T.id: 1>: 4, <T.label: 4>: 'primary-color'}, 'Key': 'value'}, {<T.id: 1>: 5, <T.label: 4>: 'secondary-color', 'Color': 'red-10'}]]}
这稍微好一点,但并不完全是 JSON 格式。