最近开发遇见一个问题,pb文件中定义的一个字段类型为int64,而客户端拿到却是string。很奇怪,经过排查原来是 proto3中json映射问题
原文链接:https://protobuf.dev/programming-guides/proto3/#json
JSON映射
Proto3 支持 JSON 中的规范编码,从而更容易在系统之间共享数据。编码在下表中按类型逐个描述。
当将 JSON 编码的数据解析到协议缓冲区中时,如果缺少一个值或者它的值为null,它将被解释为相应的 默认值。
从协议缓冲区生成 JSON 编码的输出时,如果 protobuf 字段具有默认值并且该字段不支持字段存在,则默认情况下它将从输出中省略。实现可以提供选项以在输出中包含具有默认值的字段。
使用关键字定义的 proto3 字段optional支持字段存在。设置了值且支持字段存在的字段始终在 JSON 编码输出中包含字段值,即使它是默认值。