杰森旺';t序列化:b';{";id";:";1112211133311";}&&x27;JSON不可序列化

杰森旺';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

我在使用JSONRenderer序列化对象时遇到问题

我使用的是
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序列化的(您已经有一个字符串了),这很奇怪,因为我只是在学习本教程: