Unhandled Exception: InternalLinkedHashMap' is not a subtype of type 'List

前端 未结 9 731
夕颜
夕颜 2020-12-15 16:04

I am trying to get the JSON response from the server and output it to the console.

Future login() async {
    var response = await http.get(
            


        
9条回答
  •  [愿得一人]
    2020-12-15 16:32

    Here are 2 common ways this could go wrong:

    1. If your response is a json object like

      [
          {
            key1: value1,
            key2: value2,
            key3: value3,
          },
          {
            key1: value1,
            key2: value2,
            key3: value3,
          },
      
          .....
      ] 
      

      Then, we use data[0]["name"], not data[0].name Unless we cast to an object that has the name property, we cannot use data[0].name

      We cast like this data = json.decode(response.body).cast();

      ObjectName can be whatever object you want (Inbuilt or Custom). But make sure it has the name property

    2. If your response is a JSON object like

      {
          dataKey: [
            {
              key1: value1,
              key2: value2,
              key3: value3,
            } 
          ] 
      }
      

      Then json.decode will return a Map, not a List

      Map map = json.decode(response.body);
      List data = map["dataKey"];
      print(data[0]["name"]);
      

提交回复
热议问题