使用Django REST解析JSON时出现编解码错误

0 投票
1 回答
1354 浏览
提问于 2025-04-18 09:56

我在使用Django REST框架的时候,遇到了一个解析JSON代码的错误。当我发送包含特殊字符的JSON代码时,比如:

# Client
self.info = json.dumps(u'{"culture": "Blé"}', ensure_ascii=False).encode("utf-8")
resp = self.client.post(
        '/Test/', self.info,
        content_type='application/json;  charset=utf-8',
         )

# Server 
stream = StringIO(request.DATA)
data = parsers.JSONParser().parse(stream)

我收到了这个错误信息:

{"detail": "JSON解析错误 - 'ascii'编码无法在位置15编码字符u'\xe9':序号不在范围内(128)"}

这是什么问题,应该怎么解决呢?

补充说明:我查过一些类似的问题,但没有找到答案。

1 个回答

1

你在对一个字符串使用 json.dumps,而不是对一个字典,这样会导致双重转义的问题。

你希望 self.info 是一个Unicode字符串,并且你的数据要以utf-8格式编码成json,这样你可以这样写:

self.info = json.dumps({"culture": u"Blé"})
# or just use a string in the first place
self.info = u'{"culture": "Blé"}'

撰写回答