protobuf 如何从字符串中解析枚举?

How does protobuf parse enums from strings?

给出如下原型定义:

enum Foo {
    STUFF = 1;
    A_THING = 2;
}

...protobuf 能否将以下任何字符串正确解析为值?

此外,解析器的实现是否因语言而异?

(C++ 中的解析器函数将被命名为 Foo_Parse(const std::string&, Foo*);不确定在其他语言中会是什么。)

您的 Foo 的枚举名称解析助手只接受 exact 字符串 "STUFF" 和 "A_THING".

请注意,此名称解析助手只是为您提供的便利功能。这不是 Protobuf 的核心功能。特别是,枚举名称 而不是 使用标准 Protobuf 编码在线发送。明确这一点很重要,因为在谈论 "parsing" 时很容易将其误认为与 Protobuf 有线格式解析有关,而事实并非如此。

由于这只是一个随机助手而不是核心功能,理论上其他语言的实现可以提供实现任意逻辑的助手。您需要查看特定语言的文档。但是,如果有任何语言实现了一个接受与 C++ 不同的字符串的枚举名称解析助手,我会感到有些惊讶。