我的protobuf中有一个重复的字段暴露给来电者。我想知道调用者是否明确地将其设置为空列表,或者该字段是否未设置。
HasField方法不适用于重复字段,因此我尝试使用ListFields方法枚举所有设置字段。不幸的是,无论我是否执行“message.repeated_field.extend([])”或根本不设置该字段,该字段都不会显示在ListFields()中。
是否可以区分重复字段设置为空而不设置全部?如果是这样,任何指针都会有所帮助。
答案 0 :(得分:1)
我所看到的一切都说不可能区分空的重复字段和未设置的重复字段。
我这样解决:
message NameList {
repeated string names = 1;
}
message SomeResponse {
optional NameList names = 1;
}
然后,当您要发送空列表时,只需初始化NameList
字段。