Error in json parsing on flutter. type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'ResultData' in type cast

1,011

Solution 1

You can't cast map to ResultData.

class RootModel {
  ResultData resultData;

  RootModel(this.resultData);

  RootModel.fromJSON(Map<String, dynamic> response) {
//    var list = response['result_data'] as ResultData;
    var list = ResultData.fromJSON(response['result_data']);
    print(list.runtimeType);
  }
}

Solution 2

There is no magic happening for JSON deserialization. You have to invoke the fromJSON yourself, instead of just casting:

class RootModel {
  ResultData resultData;

  RootModel(this.resultData);

  RootModel.fromJSON(Map<String, dynamic> response)
    : resultData =  ResultData.fromJSON(response['result_data'] as Map<String, dynamic>);

}
Share:
1,011
niranjan kurambhatti
Author by

niranjan kurambhatti

Updated on December 08, 2022

Comments

  • niranjan kurambhatti
    niranjan kurambhatti over 1 year

    I have json as below.

    {  
       "result_data":{  
          "id":"b57457b0-4f73-11e8-92ae-01912016d38c",
          "rates":[  
             {  },
             {  }
          ]
       }
    }
    

    I want to parse and below is my code to parse it. To get the "result_data"

    class RootModel {
      ResultData resultData;
    
      RootModel(this.resultData);
    
      RootModel.fromJSON(Map<String, dynamic> response) {
        var list = response['result_data'] as ResultData;
        print(list.runtimeType);
      }
    }
    

    To parse the result data object.

    class ResultData {
      String id;
      List<Rate> rates;
      ResultData(this.id, this.rates);
    
      ResultData.fromJSON(Map<String, dynamic> parsedJson) {
        this.id = parsedJson['id'] as String;
        this.rates = (parsedJson['rates'] as List)
            .map((json) => Rate.fromJSON(json))
            .toList();
      }
    }
    

    Further rates model has also other models and list of models. The error I am getting for the above code is:

     E/flutter: [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
        type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'ResultData' in type cast
        #0      new RootModel.fromJSON (package:movies_streams/models/RootModel.dart:16:40)