在PHP中使用Protobuf反序列化为JSON时,字段名从下划线格式自动转为驼峰格式的问题,可通过以下方案解决:
在.proto文件中使用json_name选项显式指定JSON字段名,强制保持原始下划线格式:
syntax = "proto3";
message User {
string user_name = 1 [(json_name) = "user_name"]; // 保持下划线
int32 user_age = 2 [(json_name) = "user_age"];
}
生成的JSON将保留 user_name 而非转为userName。
原因:Protobuf的PHP库默认将下划线字段名转为驼峰格式,符合部分语言的命名规范。
兼容性:json_name选项需Protobuf 3+支持。