如何区分protobuf重复字段显式设置为空列表与未设置(在python中)?

时间:2015-10-01 00:35:59

标签: python protocol-buffers

我的protobuf中有一个重复的字段暴露给来电者。我想知道调用者是否明确地将其设置为空列表,或者该字段是否未设置。

HasField方法不适用于重复字段,因此我尝试使用ListFields方法枚举所有设置字段。不幸的是,无论我是否执行“message.repeated_field.extend([])”或根本不设置该字段,该字段都不会显示在ListFields()中。

是否可以区分重复字段设置为空而不设置全部?如果是这样,任何指针都会有所帮助。

1 个答案:

答案 0 :(得分:1)

我所看到的一切都说不可能区分空的重复字段和未设置的重复字段。

我这样解决:

message NameList {
   repeated string names = 1;
}

message SomeResponse {
   optional NameList names = 1;
}

然后,当您要发送空列表时,只需初始化NameList字段。