簡體   English   中英

使用字符串鍵和List []值將Dictionary序列化為JSON

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM