Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
颤振json未处理的异常类型_Json_Flutter_Dart - Fatal编程技术网

颤振json未处理的异常类型

颤振json未处理的异常类型,json,flutter,dart,Json,Flutter,Dart,我对json响应有问题 它是: { "SData": { "total": "1", "STable": { "year": "2020", "S1Lists": [ { "year": "2020",

我对json响应有问题
它是:

{
"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']