在写django的时候,出现以下错误:
File "C:\Python27\MyDjango\jianzhi_002\jianzhi_app\views.py", line 418, in
wx_get_job_detail return HttpResponse(json.dumps({'message': message, 'data':
detail_data})) File "C:\Python27\lib\json\__init__.py", line 244, in dumps
return _default_encoder.encode(obj) File "C:\Python27\lib\json\encoder.py",
line 207, in encode chunks = self.iterencode(o, _one_shot=True) File "C:\Python
27\lib\json\encoder.py", line 270, in iterencode return _iterencode(o, 0)
ValueError: Circular reference detected
提示说的意思存在循环引用
这个错误的意思就是说在把数据打包成json格式的时候,存在循环引用,就比如说:
a = b = c = {} ... # 对b c 进行赋值 b = ... c = ... ... # 将b c 存到 a a['b'] = b a[
'c'] = c
在对 a 进行json.dumps(a)的时候就可能会出现以上的错误。
究其原因,是因为 a b c 实际上指向的是同一个对象的引用。python
虽然初始化不用声明类型,还可以在赋值的时候才初始化,但是在使用过程中,有时候还是避免不了要先初始化,再进行赋值的操作,而且不初始化容易导致一些难以察觉的错误,也不利于代码的阅读。pythonic之路漫长长啊。
修改如下:
a, b , c = {}, {}, {}
如此a b c 就不再是同一个的对象了。
问题解决。
热门工具 换一换