首页 > 解决方案 > 从 json 响应中遍历字典

问题描述

我的 json 视图:

def validate_categories(request):
    obj = request.GET.get('categories', '')
    import json
    obj: list[int] = json.loads(obj)
    qs = Institution.objects.filter(categories__in=obj)

    return JsonResponse({institution.name: institution.id for institution in qs})

我的阿贾克斯:

  var catArrIdString = JSON.stringify(catArrIdInt)
  if (catArrId.length > 0) {
    $.ajax({
      type: "GET",
      url: "/ajax/validate_categories/",
      dataType: "json",
      data: {
        "categories": catArrIdString
      }
    }).done(function(institutionsByName) {
      for (const [key, value] in Object.entries(institutionsByName)){
        console.log(`${key}: ${value}`);
      }
    })
    .fail(function(e) {
      alert( "error" );
      console.log(e)
    })
  }

然后我有一个像这样的字典:“机构名称”:机构 ID

我如何在 javascript 中遍历它并使用 InnerHTML 将每个机构及其名称和 ID 放入 DIV?

标签: javascriptpythonjsonajax

解决方案


您可以使用Object.entries使用通常的循环进行迭代

const dictionary = {
"name1": 1,
"name2": 2,
"name3": 3,
};

document.body.innerHTML = Object.entries(dictionary)
  .map(([key,val]) => `<div>${key}: ${val}</div>`)
  .join('<br/>');


推荐阅读