python - Django 对象不可 JSON 序列化

标签 python json django serialization

我有以下用于序列化查询集的代码:

def get_shop_categories(request):
    if request.method == 'POST':
        parent_id = int(request.POST.get('parent_id'))

        categories = (ShopCategory.objects.filter(enabled=True, parent=parent_id).values('id', 'title'))
        json_posts = json.dumps(categories)

        return HttpResponse(
            json_posts,
            content_type="application/json"
        )

    else:
        return HttpResponse(
            json.dumps({"success": False}),
            content_type="application/json"
        ) 

我想要它返回的是:

[{'id': 2, 'title': 'Tennis'}, {'id': 4, 'title': 'Basket'}]

相反,我收到此错误:

TypeError at /ajax/get_shop_categories
[{'id': 2, 'title': 'Tennis'}, {'id': 4, 'title': 'Basket'}] is not JSON serializable

我也用这种方式序列化:

categories = ShopCategory.objects.filter(enabled=True, parent=parent_id)                       
#json_posts = json.dumps(categories)
#objectQuerySet = ConventionCard.objects.filter(ownerUser = user)
json_posts = serializers.serialize('json', list(categories), fields=('id', 'title')) 

但我得到的东西我不喜欢:

 [{"fields":{"title":"Tennis"},"pk":2,"model":"appname.shopcategory"},{"fields":{"title":"Basket"},"pk":4,"model":"appname.shopcategory"}]

最佳答案

categories = ShopCategory.objects.filter(enabled=True, parent=parent_id).values('id', 'title')
json_posts = mark_safe(json.dumps(list(categories), ensure_ascii=False))

关于python - Django 对象不可 JSON 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27675213/

相关文章:

python - Pygame、Python列表索引问题

json - 解码具有未知字段名称的 JSON

Django 1.9 sr_Latn 语言环境不起作用

python - 应该将学生分类为类(class)角色的代码错误

python - 调用子方法时如何强制执行强制父方法调用?

python - 使用 pandas.DataFrame.mean 时返回一个 pandas DataFrame

javascript - JS-JSON解析一有很多

json - Clojure 包装-json-响应返回 404

python - 如何从 Django 管理面板中删除多余的 "s"?

python /Django : Getting random articles from huge table