gpt4 book ai didi

JSONRenderer 不会序列化 : b' {"id" :"11122211133311"}' is not JSON serializable

转载 作者:行者123 更新时间:2023-12-04 23:16:38 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"}' is not JSON serializable



然而
  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 .

关于JSONRenderer 不会序列化 : b' {"id" :"11122211133311"}' is not JSON serializable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31404594/

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