您好,为了保持向后兼容性,可以更改 Protocol Buffer 中字段的数据类型吗?例如
旧消息:
message Connection{
optional string wifi = 1;
optional int32 wifiCode = 2;
}
新消息:
message Connection{
message wifiConnection{
optional string name = 1;
optional int32 code = 2;
}
optional wifiConnection wifi = 1;
}
所以基本上我没有更改字段的标签号也没有重命名它,但我更改了数据类型。那么这会向后兼容吗?如果获取使用先前模式创建的旧原型(prototype)对象,可以通过这个新模式创建的对象来解析它吗?
最佳答案
不,它不会向后兼容。 Protocol Buffer 存储数据大致如下
Code1 + wire-type1 + {Data1}
Code2 + wire-type2 + {Data2}
Code3 + wire-type3 + {Data3}
因此第一个旧格式的存储方式如下
1 + wire-type {Wifi-Data}
2 + wire-type {Wifi-Code-Data}
新消息的存储方式如下
1 + wire-type {
1 + wire-type {Wifi-Data}
2 + wire-type {Wifi-Code-Data}
}
关于java - 更改 Protocol Buffer 中字段的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27362742/