【问题标题】:The same protobuf message field name for various types各种类型的相同protobuf消息字段名称
【发布时间】:2019-09-17 15:51:51
【问题描述】:

我正在尝试设置protobuf 协议以匹配json 架构。 json 架构由几个相互引用的对象组成。其中一个对象PV 具有属性value,根据架构,它可以是字符串、布尔值或另一个对象S。我有问题应该如何在protobuf 模式中定义它,同时保留名称value。问题是通过protobuf 将遵循json 模式的json 文件解析为Python 对象。

我试过了

message PV{
    oneof value{
        string stringValue=3;
        bool boolValue=4;
        S sValue=5;
    }
}

这会导致以下错误:

Message type "PV" has no field named "value"

当尝试通过protobuf 将遵循json 架构的json 文件解析为Python 对象时。

我也试过了:

message PV{
    google.protobuf.Any value=2;

}

没有成功。

问题是:是否可以将protobuf 扭曲为保留消息的字段名称,在我的情况下为值,但让它成为包括其他消息在内的多种类型?

提前谢谢你!

【问题讨论】:

    标签: json protocol-buffers


    【解决方案1】:

    我解决了这个问题

    message PV{
        google.protobuf.Value value=2;
    
    }
    

    【讨论】:

      【解决方案2】:

      查看python生成的代码:https://developers.google.com/protocol-buffers/docs/reference/python-generated#oneof

      oneof 名称(在您的情况下为“值”)不会生成到任何字段中。在您的情况下,google.protobuf.Value 可能是正确的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-15
        • 1970-01-01
        • 2012-01-11
        • 2015-12-20
        • 1970-01-01
        • 1970-01-01
        • 2013-06-04
        • 1970-01-01
        相关资源
        最近更新 更多