Python: "导入 JSON... json.loads(request.body)" 2.7->3.4

1 投票
1 回答
2354 浏览
提问于 2025-04-18 13:29

我最近把一个Django服务器从Python 2.7升级到了3.4.1版本。我的请求内容(request.body)是一个序列化成JSON格式的数组。当我把它反序列化时,它会变成一个Python列表。

不幸的是,似乎在新版本中,json.loads不再接受原始字节(而request.body就是这种原始字节)。

我该怎么解决这个问题呢?

def index(request):
    if request.method == 'POST':

        print("Made it here!")
        registered = []
        notRegistered = []
        print("Is it this?")

        print(repr(request.body))

        data = json.loads(request.body)

        print("Did I make it here?")

最后的打印语句从来没有执行过,所以我猜这和json.loads()有关。

1 个回答

1

我本来以为会出现错误追踪信息,而不是仅仅显示“最后一行没有执行”,不过不管这个了...

# Let's just assume the request is UTF-8 encoded.
data = json.loads(request.body.decode('utf-8'))

撰写回答