Как правильно извлечь данные из объекта 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)