I am on Windows, using Python 3.8.6rc1
, protobuf version 3.13.0
and google-cloud-vision version 2.0.0
.
My Code is :
from google.protobuf.json_format import MessageToDict
from google.cloud import vision
client = vision.ImageAnnotatorClient()
response = client.annotate_image({
'image': {'source': {'image_uri': 'https://images.unsplash.com/photo-1508138221679-760a23a2285b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=800&q=60'}},
})
MessageToDict(response)
It fails at MessageToDict(response)
, I have an attribute error: "DESCRIPTOR"
. It seems like the response
is not a valid protobuf object. Can someone help me? Thank you
This does not really answer my question but I find that one way to solve it and access the protobuf object is to use response._pb
so the code becomes:
response = client.annotate_image({
'image': {'source': {'image_uri': 'https://images.unsplash.com/photo-1508138221679-760a23a2285b?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=800&q=60'}},
})
MessageToDict(response._pb)
Look step 3,
from google.protobuf.json_format import MessageToDict
keyword_ideas = keyword_plan_idea_service.generate_keyword_ideas(
request=request
)
keyword_ideas_json = MessageToDict(keyword_ideas._pb) // add ._pb at the end of object
json
print(keyword_ideas_json)
Github for this same issue: here
maybe have a look at this post
json_string = type(response).to_json(response)
# Alternatively
import proto
json_string = proto.Message.to_json(response)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With