我正在编写一个Python脚本,用于接收protobufs,将其转换为json对象,并将它们推送到另一个服务。我使用 json.loads(MessageToJson(protobuf))
将protobuf转换为Python字典对象。稍后我使用 json.dumps(dictionary)
将其转换回json。
我的proto中有一个可选的枚举字段,例如:
enum C_TYPE
{
AB = 0;
BC = 1;
CD = 2;
}
当我收到一个指定为BC
的字段的proto时,一切都按照我的预期工作。但是,当我收到一个指定为AB
的proto时,该字段被忽略了--它不会出现在Python字典或随后的JSON转换中。我发现的解决方法是使用json.loads(MessageToJson(protobuf, including_default_value_fields=True))
,但这将为所有缺失的字段创建默认值,而不仅仅是具有0
枚举的字段。它意味着枚举为0
的字段已经不存在-但实际上并不是!
当枚举字段设置为0
时,检索其值的正确方法是什么?