Kay
Kay

Reputation: 19690

Object of type 'RepeatedCompositeContainer' is not JSON serializable

Using Google Client Library interacting with the vision library.

I have a function to detect labels from an image.

GoogleVision.py

import os

from google.cloud import vision
from google.cloud.vision import types
from google.protobuf.json_format import MessageToJson


class GoogleVision():

    def detectLabels(self, uri):

        client = vision.ImageAnnotatorClient()
        image = types.Image()
        image.source.image_uri = uri

        response = client.label_detection(image=image)
        labels = response.label_annotations

        return labels

I have an api to call this function.

from flask_restful import Resource
from flask import request
from flask import json
from util.GoogleVision import GoogleVision

import os


class Vision(Resource):

    def get(self):

        return {"message": "API Working"}

    def post(self):

        googleVision = GoogleVision()

        req = request.get_json()

        url = req['url']

        result = googleVision.detectLabels(url)

        return result

However, it does not return the result and errors with the following

TypeError: Object of type 'RepeatedCompositeContainer' is not JSON serializable

Upvotes: 10

Views: 15349

Answers (1)

Vishal K
Vishal K

Reputation: 1464

This question was answered in this GitHub link, which might help to resolve your issue.

The error you encountered is

TypeError: Object of type 'RepeatedCompositeContainer' is not JSON serializable

Below is the solution provided in the GitHub thread

  • The Vision library returns plain protobuf objects, which can be serialized to JSON using:
from google.protobuf.json_format import MessageToJson
serialized = MessageToJson(original)

Upvotes: 7

Related Questions