我在使用 JSONRenderer 序列化对象时遇到问题。
我在用着django-rest-framework
我已经序列化了对象:
pk = kwargs['pk']
tube = Tube.objects.get(id=pk)
serialized_tube = TubeSerializer(tube)
serialized_tube.data
看起来像这样:
{'id': '11122211133311'}
不幸的是我无法使用 JSONRenderer 序列化它,因为代码
tube_json = JSONRenderer().render(serialized_tube.data)
return Response(tube_json)
给出以下错误
b'{"id":"11122211133311"}' 不可 JSON 序列化
whereas
tube_json = json.dumps(serialized_tube.data)
return Response(tube_json)
效果很好...
我使用的是Python3.4.3
问题不在你的JSONRenderer()
行,但在它下面的行中,您将其作为Response
.
Django REST框架提供了自定义Response
对象将自动呈现为任何接受的呈现器,将本机 Python 结构转换为呈现版本(在本例中为 JSON 结构)。因此,Python 字典将转换为 JSON 对象,Python 列表将转换为 JSON 数组等。
现在您正在将数据序列化为 JSON 字符串then将其传递给Response
,您期望它被重新序列化为 JSON。您无法将字符串序列化为 JSON(您需要一个对象或数组来包装它),这就是您看到错误的原因。
解决方案是不调用JSONRenderer
提前,并将序列化器数据传递给Response
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)