gpt4 book ai didi

json - JSONRenderer无法序列化:b'{“id”:“11122211133311”}}不可JSON序列化

转载 作者:行者123 更新时间:2023-12-04 23:16:39 25 4
gpt4 key购买 nike

我在使用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




  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字符串,然后将其传递给Response,您希望在其中将其重新序列化为JSON。您无法将字符串序列化为JSON(您需要一个包装它的对象或数组),这就是为什么看到错误的原因。

解决方案是不提前调用JSONRenderer,而只是将串行器数据传递给Response

关于json - JSONRenderer无法序列化:b'{“id”:“11122211133311”}}不可JSON序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31404594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com