作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么 Django 给我这个异常
[(7, u'Acura'), (18, u'Alfa Romeo'), ...] is not JSON serializable
当我尝试
data = VehicleMake.objects.filter(model__start_year__gte=request.GET.get('year',0)).values_list('id','name')
return HttpResponse(simplejson.dumps(data, ensure_ascii=False), mimetype='application/json')
?
这只是一个简单的元组列表。它与我的其他硬编码列表一起使用,格式几乎完全相同。是因为字符串是unicode吗?我该如何处理?
<小时/>当我将其编码为字典时,它工作正常:
def get_makes(request):
year = request.GET.get('year',0)
data = VehicleMake.objects.filter(model__start_year__lte=year, model__stop_year__gte=year).order_by('name').distinct().values_list('id','name')
return HttpResponse(simplejson.dumps(odict(data), ensure_ascii=False), mimetype='application/json')
有些品牌有重音字符...可能是这样吗?是的,这个列表很大(总共约 900 个)。
最佳答案
这似乎工作正常:
In [28]: a = [(7, u'Acura'), (18, u'Alfa Romeo'),]
In [29]: simplejson.dumps(a, ensure_ascii=False)
Out[29]: u'[[7, "Acura"], [18, "Alfa Romeo"]]'
所以这不是前几个元组。您需要深入挖掘记录列表以缩小问题范围。如果它很大,也许可以获取数据列表的一些片段并尝试对它们进行编码,以查看错误是否发生在任何特定片段中。
更新:好的,这可能是因为您的 data
对象是一个 QuerySet 而 simplejson 无法处理它。尝试使用 django 的 serialize反而。 (或者将数据强制到列表中。)
from django.core import serializers
json_serializer = serializers.get_serializer("json")()
json_serializer.serialize(data, ensure_ascii=False, stream=response)
关于python - 为什么我会收到这个 simplejson 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3269541/
我是一名优秀的程序员,十分优秀!