Protocol buffers 如何使protobuf不区分大小写?

Protocol buffers 如何使protobuf不区分大小写?,protocol-buffers,protobuf-java,Protocol Buffers,Protobuf Java,我有一份这样的协议 信息车{ 字符串carId=1; } 我根据这个契约生成java类,并使用它解析JSON请求 现在,如果我的JSON有CarID或CarID,那么protobuf生成的java类就不会识别该字段。如何使其不区分大小写?protobuff描述符。proto不区分大小写。如果您尝试编译: message Car{ string carId = 1; string carid =2; } 您将遇到编译错误: CARID_FIELD_NUMBER is alread

我有一份这样的协议

信息车{ 字符串carId=1; }

我根据这个契约生成java类,并使用它解析JSON请求


现在,如果我的JSON有CarID或CarID,那么protobuf生成的java类就不会识别该字段。如何使其不区分大小写?

protobuff描述符。proto不区分大小写。如果您尝试编译:

message Car{
    string carId = 1;
    string carid =2;
}
您将遇到编译错误:

CARID_FIELD_NUMBER is already defined in ...
您还必须知道,对于proto3,JSON解析器正在处理lowerCamelCase。如参考指南所述:

使用proto字段名而不是lowerCamelCase名称:默认情况下proto3 JSON打印机应将字段名转换为lowerCamelCase并使用 这就是JSON名称。一个实现可以提供一个使用的选项 proto字段名改为JSON名称。Proto3 JSON解析器是 接受转换后的lowerCamelCase名称和 原型字段名


从解析器的角度来看,carID和carID是相同的,因为它会自动将carID转换为carID。但是carId和carId总是不同的。

我的理解是protobuf JSON序列化程序总是区分大小写的。所以不要使用CarID或CarID,因为它们是错误的: