为什么 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 个)。