Protobuf中如何指定json tag
在 Protocol Buffers (protobuf) 中,可以使用特定的选项来指定生成的 JSON 标签。通过在消息定义中使用 [(json_name)]
选项,可以控制生成的 JSON 字段名称。这样可以确保 Protocol Buffers 和 JSON 之间的互操作性。
下面是一个示例 protobuf 消息定义,其中指定了生成的 JSON 标签:
syntax = "proto3"; message Person { string name = 1; int32 age = 2; string email = 3; // 指定生成的 JSON 标签为 "full_name" string full_name = 4 [(json_name) = "full_name"]; // 指定生成的 JSON 标签为 "email_address" string email_address = 5 [(json_name) = "email_address"]; }
在上面的例子中,我们定义了一个 Person
消息,并在 full_name
和 email_address
字段上使用了 [(json_name)]
选项。这样,当使用 Protocol Buffers 序列化为 JSON 时,生成的 JSON 将使用指定的标签名称。
示例 JSON 输出:
{ "name": "John", "age": 30, "email": "john@example.com", "full_name": "John Doe", "email_address": "john@example.com" }
请注意,在使用 [(json_name)]
选项时,需要确保标签名称在 JSON 对象中是唯一的,以避免冲突。此外,[(json_name)]
选项只能在 protobuf v3 中使用。在旧版本的 protobuf 中,可以使用 [(name)]
选项来实现类似的功能,但不支持生成的 JSON 标签。

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具