首页 >后端开发 >Golang >如何为 Protobuf 扩展自定义 JSON 字段名称?

如何为 Protobuf 扩展自定义 JSON 字段名称?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-09 06:25:10387浏览

How Can I Customize JSON Field Names for Protobuf Extensions?

为 Protobuf 扩展自定义 JSON 字段名称

Protobuf 扩展,当序列化为 JSON 时,默认为包含方括号和前缀的字段名称指示扩展的父消息。当您更喜欢更简洁或语义上有意义的 JSON 字段名称时,这可能会很不方便。

背景

Protobuf 的 jsonpb 包从 protobuf 消息生成 JSON。 JSON 字段名称主要源自消息字段名称。但是,对于扩展,使用特殊格式:“[message.extension_message_name]”。这是为了防止在一条消息中应用多个扩展名时出现字段名称冲突。

解决方案:使用 json_name 字段选项

Protobuf 语言指南提供了一种解决方法为扩展自定义 JSON 字段名称:json_name 字段选项。通过使用此选项注释扩展字段,您可以指定所需的 JSON 字段名称。

例如:

message TestMessage {
    extensions 1 to 10;
    extend TestMessage {
        optional string my_extension_field = 1 [json_name="my_custom_field_name"];
    }
}

在此示例中,扩展字段 my_extension_field 将被序列化为 JSON 为my_custom_field_name.

使用的好处json_name

  • 控制 JSON 字段名称:避免用于扩展的详细命名约定。
  • 与其他 JSON 字段名称的一致性: 将扩展字段名称与用于常规消息的命名约定对齐字段。
  • 提高了可读性和可维护性:使 JSON 输出更易于人类阅读且更易于使用。

以上是如何为 Protobuf 扩展自定义 JSON 字段名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn