杰森旺';t序列化:b';{";id";:";1112211133311";}&&x27;JSON不可序列化
我在使用JSONRenderer序列化对象时遇到问题 我使用的是杰森旺';t序列化:b';{";id";:";1112211133311";}&&x27;JSON不可序列化,json,django,serialization,django-rest-framework,Json,Django,Serialization,Django Rest Framework,我在使用JSONRenderer序列化对象时遇到问题 我使用的是django rest框架,我已经序列化了对象: pk = kwargs['pk'] tube = Tube.objects.get(id=pk) serialized_tube = TubeSerializer(tube) serialized_tube.data如下所示: {'id':'1112211133311'} 不幸的是,我无法使用JSONRenderer序列化它,因为代码 tube_json = JS
django rest框架
,我已经序列化了对象:
pk = kwargs['pk']
tube = Tube.objects.get(id=pk)
serialized_tube = TubeSerializer(tube)
serialized_tube.data
如下所示:
{'id':'1112211133311'}
不幸的是,我无法使用JSONRenderer序列化它,因为代码
tube_json = JSONRenderer().render(serialized_tube.data)
return Response(tube_json)
给出以下错误
b'{“id”:“1112211133311”}不可JSON序列化
鉴于
tube_json = json.dumps(serialized_tube.data)
return Response(tube_json)
效果很好
我使用的是Python3.4.3问题不在
JSONRenderer()
行中,而是在它下面的行中,您将它作为响应返回
Django REST框架提供了一个自定义的响应
对象,该对象将自动呈现为任何接受的呈现器,将本机Python结构转换为呈现版本(在本例中为JSON结构)。因此,Python字典将转换为JSON对象,Python列表将转换为JSON数组,等等
现在,您正在将数据序列化为JSON字符串,然后将其传递给Response
,您希望在那里将其重新序列化为JSON。您无法将字符串序列化为JSON(您需要一个对象或数组包装它),这就是您看到错误的原因
解决方案是不要提前调用JSONRenderer
,只需将序列化程序数据传递给Response
错误消息b'{“id”:“1112211133311”}不是JSON可序列化的
表明序列化的_tube。数据
已经是JSON序列化的(您已经有一个字符串了),这很奇怪,因为我只是在学习本教程: