【问题标题】:How to store data value in protobuf?如何在protobuf中存储数据值?
【发布时间】:2021-09-05 00:08:18
【问题描述】:

在 JSON 中我们可以这样做:

{"age": 30}

密钥为age,其值为30。两者都在那里,可以使用了。

但是,如何在 protobuf 中做到这一点?在 protobuf 中,你只能这样做:

message MyMessage {    
   int age = 1;
}

如何合并值30?如果它甚至不存在,我该如何使用它。

【问题讨论】:

    标签: json xml serialization protocol-buffers encode


    【解决方案1】:

    语法:

    message MyMessage {    
       int age = 1;
    }
    

    是声明数据的模式——不是任何特定的实例/值;这可以与大多数语言中的类型定义相媲美。

    您如何实例化并分配每个实例的内容取决于您使用的特定语言和运行时。例如,在 C# 实现中,此消息可用于:

    var obj = new MyMessage { age = 30 };
    // now serialize obj to somewhere
    

    【讨论】:

    • 这是否意味着,protobuf 仅用于“类型定义”?并且必须在别处实例化/赋值。
    • @ledang .proto 模式语法仅用于类型定义,不适用于数据; data 在运行时出现;毋庸置疑,protobuf 两者都支持 - 允许您定义类型但不处理实例数据的序列化程序将毫无用处。然而,想法是您使用 .proto 架构语法为您选择的平台/语言生成代码,然后与每个实例数据相关的事情发生在那里。例如,您可能正在使用 Java、C++ 或 C# 等;描述架构的 .proto 是相同的;创建/分配每个实例数据的代码是每个语言的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    相关资源
    最近更新 更多