Arrays 如何修改Janusgraph(Gremlin)服务器API响应、字符串数组
最近,我将Janusgraph升级到了版本0.5.2,它支持序列化程序版本GryoMessageSerializerV3d0,…V2,…V1(向后兼容性)。在版本3响应中 对于数据类型字符串和字符串数组,响应格式相同。我想把回应分开 当前响应格式(v3): 对于这两种数据类型,响应格式都是{“@type”:“g:List”,}。我的要求是如何区分数据类型是否为数组/字符串。我无法检查循环中的每个键,考虑到存在大量数组数据类型,这将不是合适的解决方案。是否有可以在序列化级别配置的内容。用于分离响应的任何其他解决方案(数组作为数组,字符串作为字符串) 注: 即使对于其他序列化版本(v2、v1),也没有区别,但响应样式不同([“id1”]、[“Name1”、“Name2”])。一切都是字符串数组Arrays 如何修改Janusgraph(Gremlin)服务器API响应、字符串数组,arrays,serialization,janusgraph,gremlin-server,Arrays,Serialization,Janusgraph,Gremlin Server,最近,我将Janusgraph升级到了版本0.5.2,它支持序列化程序版本GryoMessageSerializerV3d0,…V2,…V1(向后兼容性)。在版本3响应中 对于数据类型字符串和字符串数组,响应格式相同。我想把回应分开 当前响应格式(v3): 对于这两种数据类型,响应格式都是{“@type”:“g:List”,}。我的要求是如何区分数据类型是否为数组/字符串。我无法检查循环中的每个键,考虑到存在大量数组数据类型,这将不是合适的解决方案。是否有可以在序列化级别配置的内容。用于分离响应
谢谢。对于GraphSON和GraphBinary,我们选择将数组视为
列表。您必须为GraphSON编写自己的自定义序列化程序插件。通过查看JanusGraph代码,您可以了解开发一个应用程序所涉及的内容。您需要自定义实例和将它们公开给GraphSON。然后,您可以使用构造图形onMapper
。将映射器生成器实例交给一个新的GraphSONMessageSerializer
对于服务器,这意味着添加您自己的IoRegistry
(JanusGraph示例[此处])并将其添加到Gremlin服务器
对于驱动程序,这意味着手动构造GraphSONMessageSerializer
,然后在使用Builder
构造Cluster
对象时,使用serializer(MessageSerializer)
选项提供实例
作为替代方案,您可以使用Gryo,我相信它将保留数组类型,但请注意:
Gryo不受欢迎。没有计划完全删除它,但是首选二进制格式的是GraphBinary(尽管它不支持前面提到的数组)
Gryo只在JVM上工作。不支持Python、.NET等
"@type": "g:Map",
"@value": [
"_id", // string
{
"@type": "g:List",
"@value": [
"id1"
]
},
"names", // array of strings
{
"@type": "g:List",
"@value": [
"Name1", "Name2"
]
},
]