我正在尝试将 protobuf 序列化为 JSON。我制作了一个简单的原型文件,其中包含以下消息:
syntax = "proto3";
message Bool {
bool data = 1;
}
message BoolArray {
repeated Bool bools = 1;
}
Run Code Online (Sandbox Code Playgroud)
然后,我运行一些基本代码来构建消息,推送到 Json,然后将其读回:
pb_bool_array = pb_bool.BoolArray()
b = pb_bool_array.bools.add()
b.data = True
bools_as_json = MessageToJson( pb_bool_array )
Parse(bools_as_json, proto.bool_pb2.BoolArray )
Run Code Online (Sandbox Code Playgroud)
但 Parse 函数会抛出TypeError以下消息:
google.protobuf.json_format.ParseError:无法解析 bools 字段:必须使用 BoolArray 实例作为第一个参数调用未绑定方法 ClearField() (改为使用 str 实例)。
我跟踪了 Parse 函数,这个错误在 Google 代码的第 519 行触发json_format。为什么会出现这个TypeError呢?我是否在我的原型规范中遗漏了某些内容和/或滥用了 python API?
谢谢!