Expected a value of type 'List<dynamic>', but got one of type '_JsonMap'

6,540

Found out what the problem was.

I just had to add :

final json = "[" + response.body + "]";
Share:
6,540
Johnnyxsx
Author by

Johnnyxsx

Updated on December 29, 2022

Comments

  • Johnnyxsx
    Johnnyxsx over 1 year

    When I try to json decode I get the error Expected a value of type 'List', but got one of type '_JsonMap'

    My code:

      static Future<Response<Localizacao>> getLocalizacao(String cep) async {
        await Future.delayed(Duration(milliseconds: 200));
        try {
          Map<String, String> headers = {
            'Authorization': 'Token token=9e034db1f315356f30'};
          String protocol = 'https://cors-anywhere.herokuapp.com/';
          String uri =
              'https://www.cepaberto.com/api/v3/cep?cep=' + cep;
          final endpoint = "&format=json";
          String url = protocol + uri + endpoint;
    
          final response = await http.get(url, headers: headers);
    
          if (response.statusCode == 200) {
    
            final json = response.body;
    
            List list = (jsonDecode(json) as List<dynamic>) ;
    
            final local = list.map<Localizacao>((map) => Localizacao.fromJson(map)).toList();
    
            return Response(true, msg: "OK", result: local[0]);
          } else {
            return Response(false, msg: "Erro ao conectar no web service");
          }
        } catch (e) {
    
          return Response(false, msg: "Erro ao conectar no web service");
        }
      }
    

    I tried other ways like:

    List list = convert.json.decode(response.body);
    List list = convert.json.decode(json);