Проблема с получением данных при вызове api в flutter/dart

#api #flutter

Вопрос:

как я могу получить ключи name и team_name в этих данных API? условие: здесь 18,1,17 и т. Д. Являются кодами темы, которые изменяются в зависимости от темы и не исправляют эту тему, доступную при следующем вызове API.

 {
    "18": {
        "detail": {
            "id": "18",
            "name": "Hindi"
        },
        "list": [
            {
                "id": "5",
                "team_name": "Gurpreet",
            },
            {
                "id": "2",
                "team_name": "Test1",
            }
        ]
    },
    "17": {
        "detail": {
            "id": "17",
            "name": "Punjabi"
        },
        "list": [
            {
                "id": "6",
                "team_name": "Guru",
            },
            {
                "id": "3",
                "team_name": "Test",
            }
        ]
    },
    "1": {
        "detail": {
            "id": "1",
            "name": "History"
        },
        "list": [
            {
                "id": "7",
                "team_name": "Gurpreet",
            }
        ]
    },
    "19": {
        "detail": {
            "id": "19",
            "name": "Math"
        },
        "list": [
            {
                "id": "4",
                "team_name": "Gurpreet",
            }
        ]
    },
    "status": true
}
 

Ответ №1:

Используйте этот код. Вы можете проверить keys геттер, чтобы проверить ключ динамики.

 import 'dart:convert';

void main() async {
  var f = {
    "18": {
      "detail": {"id": "18", "name": "Hindi"},
      "list": [
        {
          "id": "5",
          "team_name": "Gurpreet",
        },
        {
          "id": "2",
          "team_name": "Test1",
        }
      ]
    },
    "17": {
      "detail": {"id": "17", "name": "Punjabi"},
      "list": [
        {
          "id": "6",
          "team_name": "Guru",
        },
        {
          "id": "3",
          "team_name": "Test",
        }
      ]
    },
    "1": {
      "detail": {"id": "1", "name": "History"},
      "list": [
        {
          "id": "7",
          "team_name": "Gurpreet",
        }
      ]
    },
    "19": {
      "detail": {"id": "19", "name": "Math"},
      "list": [
        {
          "id": "4",
          "team_name": "Gurpreet",
        }
      ]
    },
    "status": true
  };

  for (var o in f.keys) {
    print(o);
    if (f[o] is bool) {
      print(f[o]);
    } else { // check it is Map. I consider it always is Map
      if ((f[o] as Map)['detail'] != null) {
        print((f[o] as Map)['detail']['name']);
      }
      if ((f[o] as Map)['list'] != null) {
        print((f[o] as Map)['list'][0]['team_name']); // you can use for here. please check array is not null
      }
    }
  }
}