gpt4 book ai didi

python - map 对象不是 JSON 可序列化的

转载 作者:太空狗 更新时间:2023-10-29 17:55:23 26 4
gpt4 key购买 nike

返回 JSONResponse 时会发生这种情况,这是在 Django 1.7 中添加的。并且是 json.dumps 的包装器。但是,在这种情况下,它会导致错误。我确信数据是正确的,并且可以通过 Python shell 序列化为 JSON。

将数据序列化为 JSON 的正确方法是什么?

from django.http import JsonResponse
from collections import OrderedDict

data = OrderedDict([('doc', '546546545'), ('order', '98745'), ('nothing', '0.0')])

return JsonResponse(data) # doesn't work, JSONRenderer().render(data) works

导致此错误:

<map object at 0x7fa3435f3048> is not JSON serializable

print(data) 给出:

OrderedDict([('doc', '546546545'), ('order', '98745'), ('nothing', '0.0')])

最佳答案

Python 3 中的

map() 是一个生成器函数,它在 JSON 中不可序列化。您可以通过将其转换为列表使其可序列化:

from django.http import JsonResponse
from collections import OrderedDict

def order(request):
bunch = OrderSerializer(Order.objects.all(), many=True)
headers = bunch.data[0].keys()
# consume the generator and convert it to a list here
headers_prepared = list(map(lambda x: {'data': x} , headers))
ordered_all = (('columns', headers_prepared), ('lines', bunch.data))
data = OrderedDict(ordered_all)
return JsonResponse(data)

关于python - map 对象不是 JSON 可序列化的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33989430/

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