ProtoBuf 字段 零 值问题

来源:2-6 ProtoBuf字段的可选性

CHENGZZZ

2021-07-21 23:14:36

老师您好,还有点不理解


如果定义字段的值就是 0 的话

后端传过去的岂不是没有这个字段?

写回答

1回答

ccmouse

2021-07-25

protobuf中我们会认为不区分0和没有这个数这两种情况。就像我这里所表述的,我们要把我们的api设计成不需要区分0和不存在这两种情况,这样就能愉快的使用protobuf。

反之,我们必须区分0和没有,就有几种方法,可能会坑。就拿我这个fee_cent字段做例子,一定要区分0和不填两种情况的话:

  1. 我们再加一个bool has_fee_cent字段,明确告诉后端有没有fee_cent。这样绝对不会坑,但是用了两个字段不太美观。

  2. 我们在protobuf的序列化时,都可以选择如果fee_cent是0,我们要不要生成一行fee_cent:0。这个我后面在使用go语言时在marshaller部分会碰到。但这个就要求客户端服务器保持一致。

0

0 学习 · 1399 问题

查看课程