如何使protobuf不区分大小写?

时间:2018-04-26 20:18:10

标签: protocol-buffers protobuf-java

我有这样的protobuf合约,

message Car{ string carId = 1; }

我从这个合约生成java类,并用它来解析JSON请求。

现在,如果我的JSON具有“CarID”或“carid”,则protobuf生成的java类无法识别该字段。如何使其不区分大小写?

1 个答案:

答案 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”将永远不同。