使用Django REST解析JSON时出现编解码错误
我在使用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é"}'