[英]Serialize Dictionary with a string key and List[] value to JSON
我如何将python字典序列化为JSON并传递回javascript,它包含一个字符串键,而值是一个列表(即[])
if request.is_ajax() and request.method == 'GET':
groupSet = GroupSet.objects.get(id=int(request.GET["groupSetId"]))
groups = groupSet.groups.all()
group_items = [] #list
groups_and_items = {} #dictionary
for group in groups:
group_items.extend([group_item for group_item in group.group_items.all()])
#use group as Key name and group_items (LIST) as the value
groups_and_items[group] = group_items
data = serializers.serialize("json", groups_and_items)
return HttpResponse(data, mimetype="application/json")
结果:
[{"pk": 5, "model": "myApp.group", "fields": {"name": "\u6fb4\u9584", "group_items": [13]}}]
而group_items应该具有多个group_item,每个group_item应该具有“名称”,而不仅仅是ID,在这种情况下,ID为13。
我需要序列化组名称以及group_item的ID和名称(如JSON),然后传递回javascript。
我是Python和Django的新手,如果您有更好的方法可以这样做,请告诉我,谢谢。 非常感谢。 :)
您的“组”变量是QuerySet对象,而不是字典。 您将希望对要返回的数据更加明确。
import json
groups_and_items = {}
for group in groups:
group_items = []
for item in group.group_items.all():
group_items.append( {'id': item.id, 'name': item.name} )
# <OR> if you just want a list of the group_item names
#group_items = group.group_items.all().values_list('name', flat=True)
groups_and_items[group.name] = group_items
data = json.dumps(groups_and_items)
您到底想让数据看起来像什么? 上面应该给你这样的data
:
[{ 'groupA': [{'id': 1, 'name': 'item-1'}],
'groupB': [{'id': 2, 'name': 'item-2'}, ...],
'groupC': []
}]
如果只需要group_item名称列表,则可以使用以下命令:
[{ 'groupA': ['item-1'],
'groupB': ['item-2', ...],
'groupC': []
}]
您应该使用Python的json模块对JSON进行编码。
另外,您在什么缩进级别具有data = serializers
? 看起来它可能在for循环内?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.