我需要去掉前缀“u”,因为我正在将这些json序列化列表传递到前端,并用javascript处理它们。Javascript无法理解这些“u”
代码如下:
context['list_of_dicts'] = serialize('json', my_list_of_dicts)
# this function is wrapped with a @json response decorator
@json_响应如下:
^{pr2}$在前端,我得到一个错误:
Uncaught SyntaxError: Unexpected token u in JSON at position 0
这是因为“u”前缀没有被删除。如何删除“u”前缀以便前端可以解码JSON?在
您正在将数据序列化三次。首先是:
再加上两倍:
^{pr2}$这将对从view函数返回的
str()
表示进行编码,然后将其转换为JSON字符串文档。str()
转换添加了u
前缀;您正在序列化Unicode字符串对象文本:您的装饰师还有几个问题:
您使用的是一个blanket
except
处理程序,因此您将屏蔽第一次尝试用simplejson.dumps()
序列化时抛出的任何错误。永远不要使用毯子except
并使异常静音。你现在不知道哪里出了问题。另请参见Why is "except: pass" a bad programming practice?您似乎在将对象序列化到字典中;如果您想发回一个JSON对象,请先构造只由Python对象组成的对象,然后序列化整个对象。
如果需要自定义序列化逻辑(如使用Django serialisation framework),请不要使用
@json_response
修饰符重新编码,或者至少返回一个HttpResponse
实例,以避免再次序列化。相关问题 更多 >
编程相关推荐