ValueError: Circular reference detected

Viewed 4404

I had a code of around 287 lines, when it is executed on command prompt everything works fine, but when it is compiled on localhost with Flask it is showing following error:

ERROR:series-api:Exception on /papis/get-series [GET]
Traceback (most recent call last):
  File "C:\Users\mkiak\AppData\Roaming\Python\Python39\site-packages\flask\app.py", line 2070, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\mkiak\AppData\Roaming\Python\Python39\site-packages\flask\app.py", line 1515, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\mkiak\AppData\Roaming\Python\Python39\site-packages\flask\app.py", line 1513, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\mkiak\AppData\Roaming\Python\Python39\site-packages\flask\app.py", line 1499, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "E:\series-api.py", line 275, in getSeries
    return jsonify(result)
  File "C:\Users\mkiak\AppData\Roaming\Python\Python39\site-packages\flask\json\__init__.py", line 348, in jsonify
    f"{dumps(data, indent=indent, separators=separators)}\n",
  File "C:\Users\mkiak\AppData\Roaming\Python\Python39\site-packages\flask\json\__init__.py", line 129, in dumps
    rv = _json.dumps(obj, **kwargs)
  File "C:\Program Files\Python39\lib\json\__init__.py", line 234, in dumps
    return cls(
  File "C:\Program Files\Python39\lib\json\encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "C:\Program Files\Python39\lib\json\encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
ValueError: Circular reference detected
1 Answers

You have a reference to object inside the object itself. Minimal example:

import json

d = {}
d["a"] = d

json.dumps(d) # raises ValueError: Circular reference detected

You can try to create a (deep) copy of the object.

d = {}
d["a"] = d.copy()

json.dumps(d)
Related