Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何修改Janusgraph(Gremlin)服务器API响应、字符串数组_Arrays_Serialization_Janusgraph_Gremlin Server - Fatal编程技术网

Arrays 如何修改Janusgraph(Gremlin)服务器API响应、字符串数组

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”,}。我的要求是如何区分数据类型是否为数组/字符串。我无法检查循环中的每个键,考虑到存在大量数组数据类型,这将不是合适的解决方案。是否有可以在序列化级别配置的内容。用于分离响应

最近,我将Janusgraph升级到了版本0.5.2,它支持序列化程序版本GryoMessageSerializerV3d0,…V2,…V1(向后兼容性)。在版本3响应中 对于数据类型字符串和字符串数组,响应格式相同。我想把回应分开

当前响应格式(v3):

对于这两种数据类型,响应格式都是{“@type”:“g:List”,}。我的要求是如何区分数据类型是否为数组/字符串。我无法检查循环中的每个键,考虑到存在大量数组数据类型,这将不是合适的解决方案。是否有可以在序列化级别配置的内容。用于分离响应的任何其他解决方案(数组作为数组,字符串作为字符串)

注: 即使对于其他序列化版本(v2、v1),也没有区别,但响应样式不同([“id1”]、[“Name1”、“Name2”])。一切都是字符串数组


谢谢。

对于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"
            ]
        },
        
    ]