如何区分 protobuf 重复字段被显式设置为空列表与根本未设置(在 python 中)?
How to distinguish between a protobuf repeated field being explicitly set to empty list vs. not set at all (in python)?
我的 protobuf 中有一个重复的字段暴露给调用者。我想知道调用者是否明确将其设置为空列表,或者该字段是否根本未设置。
HasField 方法不适用于重复的字段,所以我尝试使用 ListFields 方法枚举所有设置的字段。不幸的是,无论我是执行 "message.repeated_field.extend([])" 还是根本不设置该字段,该字段都不会显示在 ListFields() 中。
甚至可以区分设置为空和未全部设置的重复字段吗?如果是这样,任何指示都会有所帮助。
我所看到的一切都表明无法区分空的重复字段和未设置的重复字段。
我是这样解决的:
message NameList {
repeated string names = 1;
}
message SomeResponse {
optional NameList names = 1;
}
然后当你想发送一个空列表时,只需初始化 NameList
字段。
我的 protobuf 中有一个重复的字段暴露给调用者。我想知道调用者是否明确将其设置为空列表,或者该字段是否根本未设置。
HasField 方法不适用于重复的字段,所以我尝试使用 ListFields 方法枚举所有设置的字段。不幸的是,无论我是执行 "message.repeated_field.extend([])" 还是根本不设置该字段,该字段都不会显示在 ListFields() 中。
甚至可以区分设置为空和未全部设置的重复字段吗?如果是这样,任何指示都会有所帮助。
我所看到的一切都表明无法区分空的重复字段和未设置的重复字段。
我是这样解决的:
message NameList {
repeated string names = 1;
}
message SomeResponse {
optional NameList names = 1;
}
然后当你想发送一个空列表时,只需初始化 NameList
字段。