json - Django 核心 : <django. utils.functional.__proxy__ 对象在 ....> 不是 JSON 可序列化的

标签 json django serialization

我正在使用 Django 1.8,在我的一些代码中我只是这样做:

self.request.session['message'] = [
    _(u'Tag!'),
    _(u'Abt!'),
    _(u'Click here to hide this message')]

然后当页面刷新我有这个问题:

<django.utils.functional.__proxy__ object at 0x04805F70> is not JSON serializable

当然,我已经搜索过它,并且我已经阅读了 documentation其中说“JSON 仅支持字符串键”和“来自 django.core.signing 的 JSON 序列化程序只能序列化基本数据类型”。

除非我错了,否则由字符串组成的数组是基本数据类型。此外,该代码已经存在 6 个月没有问题。

我错过了什么?

最佳答案

您尝试序列化的似乎不是字符串 - 它们是 lazy translation objects (即标记为翻译的字符串,尚未评估)。

同一文件中很可能有一行与此类似:

from django.utils.translation import ugettext_lazy as _

要使用非惰性翻译函数(即它返回翻译后的字符串而不是惰性翻译对象),您应该将其更改为:

from django.utils.translation import ugettext as _

或者,您可以通过在它们上调用 str() 来强制评估惰性翻译对象,然后再将它们序列化。

关于json - Django 核心 : <django. utils.functional.__proxy__ 对象在 ....> 不是 JSON 可序列化的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35824642/

相关文章:

java - 这些 java 类是否具有从 JSON 文件映射的正确结构?

c# - 为什么此代码会为(看起来是)相同的输入提供两个不同的输出?

javascript - 将 JSON 数据传递到 div 框中

java - Android JSON 限制行数

python - Django 代理用户模型示例

使用负载均衡器部署在 GKE 上的 Django 无法使用外部 IP 和暴露端口访问

javascript - 无法在 Python 中解码来自 Javascript 的 JSON 响应

javascript - JSON 对象在控制台中显示对象,但也包含 php 脚本返回的字符串中的 'undefined'

Django:如何仅在 1 个模板中包含元标记

symfony - 在 JMS Serializer 上反序列化期间构造对象