我有如下的json。
{
"result_data":{
"id":"b57457b0-4f73-11e8-92ae-01912016d38c",
"rates":[
{ },
{ }
]
}
}
我想要解析,下面是我解析它的代码。获取"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);
}
}
来解析结果数据对象。
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();
}
}
进一步的费率模型也有其他模型和模型列表。对于上面的代码,我得到的错误是:
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)
发布于 2019-01-14 12:45:37
您不能将map强制转换为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);
}
}
发布于 2019-01-14 12:45:08
JSON反序列化不会有什么神奇的事情发生。您必须自己调用fromJSON
,而不仅仅是强制转换:
class RootModel {
ResultData resultData;
RootModel(this.resultData);
RootModel.fromJSON(Map<String, dynamic> response)
: resultData = ResultData.fromJSON(response['result_data'] as Map<String, dynamic>);
}
https://stackoverflow.com/questions/54181469
复制