Как правильно извлечь данные из объекта google protobuff? - PullRequest
0 голосов
/ 08 июня 2018

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

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

from google.protobuf.json_format import MessageToJson 

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

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

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

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

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

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

response1 = vision_client.face_detection(image=image)
print(response1)
print(response1.face_annotations[0].detection_confidence)
0 голосов
/ 08 июня 2018

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

...