go-protoparser parses the proto3 <https://developers.google.com/protocol-buffers/docs/reference/proto3-spec> file.
- https://github.com/yoheimuta/go-protoparser - You can use it if you know one Parse function. ---- A Protocol Buffer file versioned 3 which is an example of the official reference. syntax = "proto3"; // An example of the official reference // See https://developers.google.com/protocol-buffers/docs/reference/proto3-spec#proto_file package examplepb; import public "other.proto"; option java_package = "com.example.foo"; enum EnumAllowingAlias { option allow_alias = true; UNKNOWN = 0; STARTED = 1; RUNNING = 2 [(custom_option) = "hello world"]; } message outer { option (my_option).a = true; message inner { // Level 2 int64 ival = 1; } repeated inner inner_message = 2; EnumAllowingAlias enum_field =3; map<int32, string> my_map = 4; } The Parsed result is a Go typed struct. The below output is encoded to JSON for simplicity. { "Syntax": { "ProtobufVersion": "proto3", "Comments": null }, "ProtoBody": [ { "Name": "examplepb", "Comments": [ { "Raw": "// An example of the official reference" }, { "Raw": "// See https://developers.google.com/protocol-buffers/docs/reference/proto3-spec#proto_file" } ] }, { "Modifier": 1, "Location": "\"other.proto\"", "Comments": null }, { "OptionName": "java_package", "Constant": "\"com.example.foo\"", "Comments": null }, { "EnumName": "EnumAllowingAlias", "EnumBody": [ { "OptionName": "allow_alias", "Constant": "true", "Comments": null }, { "Ident": "UNKNOWN", "Number": "0", "EnumValueOptions": null, "Comments": null }, { "Ident": "STARTED", "Number": "1", "EnumValueOptions": null, "Comments": null }, { "Ident": "RUNNING", "Number": "2", "EnumValueOptions": [ { "OptionName": "(custom_option)", "Constant": "\"hello world\"" } ], "Comments": null } ], "Comments": null }, { "MessageName": "outer", "MessageBody": [ { "OptionName": "(my_option).a", "Constant": "true", "Comments": null }, { "MessageName": "inner", "MessageBody": [ { "IsRepeated": false, "Type": "int64", "FieldName": "ival", "FieldNumber": "1", "FieldOptions": null, "Comments": [ { "Raw": "// Level 2" } ] } ], "Comments": null }, { "IsRepeated": true, "Type": "inner", "FieldName": "inner_message", "FieldNumber": "2", "FieldOptions": null, "Comments": null }, { "IsRepeated": false, "Type": "EnumAllowingAlias", "FieldName": "enum_field", "FieldNumber": "3", "FieldOptions": null, "Comments": null }, { "KeyType": "int32", "Type": "string", "MapName": "my_map", "FieldNumber": "4", "FieldOptions": null, "Comments": null } ], "Comments": null } ] } MIT License. Contributions and feedbacks welcome. -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
