我有一个这样的protobuf合同,
message Car{
string carId = 1;
}
我从这个合同生成 java 类并用它来解析 JSON 请求。
现在,如果我的 JSON 具有“CarID”或“carid”,那么 protobuf 生成的 java 类将无法识别该字段。如何使其不区分大小写?
我有一个这样的protobuf合同,
message Car{
string 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。如参考指南所述: 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”总是不同的。