How to define an optional field in protobuf 3

前端 未结 9 1410
无人及你
无人及你 2020-12-22 18:14

I need to specify a message with an optional field in protobuf (proto3 syntax). In terms of proto 2 syntax, the message I want to express is something like:

         


        
9条回答
  •  既然无缘
    2020-12-22 19:07

    One way is to optional like described in the accepted answer: https://stackoverflow.com/a/62566052/1803821

    Another one is to use wrapper objects. You don't need to write them yourself as google already provides them:

    At the top of your .proto file add this import:

    import "google/protobuf/wrappers.proto";

    Now you can use special wrappers for every simple type:

    DoubleValue
    FloatValue
    Int64Value
    UInt64Value
    Int32Value
    UInt32Value
    BoolValue
    StringValue
    BytesValue
    

    So to answer the original question a usage of such a wrapper could be like this:

    message Foo {
        int32 bar = 1;
        google.protobuf.Int32Value baz = 2;
    }
    

    Now for example in Java I can do stuff like:

    if(foo.hasBaz()) { ... }

提交回复
热议问题