我有这样的protobuf合约,
message Car{
string carId = 1;
}
我从这个合约生成java类,并用它来解析JSON请求。
现在,如果我的JSON具有“CarID”或“carid”,则protobuf生成的java类无法识别该字段。如何使其不区分大小写?
答案 0 :(得分:0)
protobuff描述符(.proto)不区分大小写。如果您尝试编译:
message Car{
string carId = 1;
string carid =2;
}
您将遇到编译错误:
CARID_FIELD_NUMBER is already defined in ...
此外,您必须知道,对于proto3,JSON解析器正在处理lowerCamelCase。如参考指南所述: https://developers.google.com/protocol-buffers/docs/proto3#json
使用proto字段名称而不是lowerCamelCase名称:默认为proto3 JSON打印机应将字段名称转换为lowerCamelCase并使用 作为JSON名称。实现可以提供使用选项 而是将proto字段名称作为JSON名称。 Proto3 JSON解析器是 要求接受转换后的lowerCamelCase名称和 proto字段名称。
从解析器的角度来看,“carID”和“CarID”是相同的,因为它会自动将“CarID”转换为“carID”。但“carId”和“carid”将永远不同。