【问题标题】:Django is throwing a "[123L, 123L] is not JSON serializable"Django 抛出“[123L, 123L] is not JSON serializable”
【发布时间】:2012-02-16 12:12:54
【问题描述】:

在我的代码中:

json.dumps({'foo': {'bar': [123L, 123L]}})

长整数是主键。此行由于某种原因会产生错误:

“[123L, 123L] 不是 JSON 可序列化的”

当我尝试在 python manage.py shell 中执行它时:

json.dumps({'foo': {'bar': [123L, 123L]}})

工作正常。

谁能告诉我发生了什么事?

确切的 Django 错误:

异常类型:TypeError 异常值:[123L] 不是 JSON 可序列化的 异常位置:默认为 /usr/lib/python2.7/dist-packages/simplejson/encoder.py,第 192 行

【问题讨论】:

  • 首先,您发布的代码缺少右括号 (})...
  • 你能告诉我们抛出异常的(最小的)完整代码吗?
  • 尝试将 123L 转换为 int
  • 您能否向我们提供有关您的环境的更多信息? Django 版本、操作系统等
  • 我刚刚意识到实际问题是什么:[123L, 123L] 是 ValuesListQuerySet 类型 - 我需要以某种方式将其转换为列表。

标签: python django json django-views jsonserializer


【解决方案1】:

这对我有用:

from django.db.models.query import ValuesListQuerySet

def default(o):
    if isinstance(o, ValuesListQuerySet):
        return list(o)
    raise TypeError(repr(o) + " is not JSON serializable")

json.dumps(valueListObject, default=default)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2013-11-25
    • 2019-05-06
    • 2019-10-09
    • 2021-03-02
    • 2013-07-12
    相关资源
    最近更新 更多