簡體   English   中英

如何區分顯式設置為空列表的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字段即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM