颤振json未处理的异常类型
我对json响应有问题颤振json未处理的异常类型,json,flutter,dart,Json,Flutter,Dart,我对json响应有问题 它是: { "SData": { "total": "1", "STable": { "year": "2020", "S1Lists": [ { "year": "2020",
它是:
{
"SData": {
"total": "1",
"STable": {
"year": "2020",
"S1Lists": [
{
"year": "2020",
"turn": "6",
"Ranking": [
{
"position": "1",
"Person": {
"personId": "paul",
"nationality": "none"
},
},
]
}
]
}
}
省道代码if(response.statusCode == 200){
final result = response.data;
Iterable list = result['SData'];
print(list);
}else{
throw Exception("Fail!");
}
我收到了这个错误Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Iterable<dynamic>'
未处理的异常:类型“\u InternalLinkedHashMap”不是类型“Iterable”的子类型
例如,如果我想访问position字段或personId字段,我该如何解决这一问题?这是因为您的json输出是一个
映射,而不是可编辑的
if (response.statusCode == 200) {
final result = response.data;
final Map<String, dynamic> map = result['SData'];
print(map );
} else {
throw Exception("Fail!");
}
如果你想获得排名
final Map<String, dynamic> data = result ['SData'];
final Map<String, dynamic> table = data['STable']; // This is like result['SData']['STable']
final Map<String, dynamic> list = table['S1Lists']; // result['SData']['STable']['S1Lists']
final Map<String, dynamic> firstItem = list[0]; // result['SData']['STable']['S1Lists'][0]
final Map<String, dynamic> ranking = list['Ranking']; // result['SData']['STable']['S1Lists'][0]['Ranking']
最终地图数据=结果['SData'];
最终地图表格=数据[‘稳定’];//这类似于结果['SData']['STable']
最终地图列表=表['S1Lists'];//结果['SData']['STable']['S1Lists']
最终映射firstItem=列表[0];//结果['SData']['STable']['S1Lists'][0]
最终地图排名=列表[‘排名’];//结果['SData']['STable']['S1Lists'][0]['Ranking']
好的,谢谢,它可以工作。但是如果我想将所有的“排名”而不是所有的SData收集到一个变量中,我更新了代码
final Map<String, dynamic> data = result ['SData'];
final Map<String, dynamic> table = data['STable']; // This is like result['SData']['STable']
final Map<String, dynamic> list = table['S1Lists']; // result['SData']['STable']['S1Lists']
final Map<String, dynamic> firstItem = list[0]; // result['SData']['STable']['S1Lists'][0]
final Map<String, dynamic> ranking = list['Ranking']; // result['SData']['STable']['S1Lists'][0]['Ranking']