Как правильно извлечь данные из объекта google protobuff?

До этого момента я никогда не сталкивался с подобными коллекциями или объектами (это ответ на запрос к Google-Cloud-Vision API).

Я написал класс, который использует API и делает то, что я хочу правильно. Однако единственный способ, которым я могу извлечь / манипулировать данными в ответе, - использовать этот модуль:

from google.protobuf.json_format import MessageToJson 

Я в основном сериализовал protobuff в строку, а затем использовал регулярные выражения для получения данных, которые я хочу.

Должен быть лучший способ, чем этот. Какие-либо предложения? Я надеялся, что ответ API даст мне JCT или JSON DICT и т.д.... Все, что я мог придумать, это превратить ответ в строку.

Вот файл из репозитория github: image_analyzer.py

Спасибо всем заранее.

2 ответа

Решение

Встроенный json модуль будет анализировать строку в словаре, как json.loads(MessageToJson(response1)),

Вы можете просто получить доступ к полям в объекте сообщения напрямую, например:

response1 = vision_client.face_detection(image=image)
print(response1)
print(response1.face_annotations[0].detection_confidence)
Другие вопросы по тегам