从google protobuff对象中提取数据的正确方法是什么?

时间:2018-06-08 19:53:29

标签: json python-3.x python-requests protocol-buffers google-cloud-vision

到目前为止,我从未遇到过这种集合或对象(它是对Google-Cloud-Vision API请求的响应)。

我编写了一个使用API​​的类,并且正确地执行了我想要的操作。但是,我可以在响应中提取/操作数据的唯一方法是使用此模块:

from google.protobuf.json_format import MessageToJson 

我基本上将protobuff序列化为一个字符串,然后使用正则表达式来获取我想要的数据。

必须有比这更好的方法。有什么建议?我希望API响应能给我一个json dict或json dict of dicts等等......我想出的就是将响应变成一个字符串。

以下是github存储库中的文件: image_analyzer.py

提前谢谢大家。

2 个答案:

答案 0 :(得分:1)

内置的json模块会将字符串解析为字典,例如json.loads(MessageToJson(response1))

答案 1 :(得分:0)

您可以直接访问消息对象中的字段,例如:

response1 = vision_client.face_detection(image=image)
print(response1)
print(response1.face_annotations[0].detection_confidence)