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>);
}
Author by
niranjan kurambhatti
Updated on December 08, 2022Comments
-
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)