Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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_Google Places Api - Fatal编程技术网

如何访问特定json键的索引

如何访问特定json键的索引,json,flutter,dart,google-places-api,Json,Flutter,Dart,Google Places Api,我需要访问特定密钥以捕获节点信息,其中密钥为管理区域级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别 我目前正在通过索引“1”或“2”访问 但如果GoogleAPI Places的json结果包含更多数

我需要访问特定密钥以捕获节点信息,其中密钥为管理区域级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别级别

我目前正在通过索引“1”或“2”访问

但如果GoogleAPI Places的json结果包含更多数据,那么这些索引将不正确

有没有办法访问我想要获取城市或州名称的特定密钥

示例代码:

class Api {

  pesquisar (String local) async{

    http.Response response = await http.get(

      URL_BASE + "?place_id=$local" +"&fields=name,address_component&key=" +KEY_PLACE

    );

    if( response.statusCode == HttpStatus.ok ){


      Map<String, dynamic> dadosJson = json.decode( response.body );
      print( "Data : " + dadosJson["result"]["address_components"][1]["short_name"].toString() );
      print( "Data : " + dadosJson["result"]["address_components"][2]["short_name"].toString() );

    } else {

    }


  }

}
类Api{
pesquisar(字符串本地)异步{
http.Response-Response=等待http.get(
URL\u BASE+“?place\u id=$local”+“&fields=name,address\u component&key=“+key\u place”
);
if(response.statusCode==HttpStatus.ok){
Map dadosJson=json.decode(response.body);
打印(“数据:+dadosJson[“结果”][“地址组件”][1][“短名称”]。toString());
打印(“数据:+dadosJson[“结果”][“地址组件”][2][“短名称”].toString());
}否则{
}
}
}

您可以这样做:

List components = dadosJson["result"]["address_components"];

final item1 = components.firstWhere(
    (item) => item["types"].contains("administrative_area_level_1"));

final item2 = components.firstWhere(
    (item) => item["types"].contains("administrative_area_level_1"));

print(item1["short_name"]);
print(item2["short_name"]);


我建议您将json解析为一个对象模型,这样您就不必面对一些类型推断问题。

将结果循环并检查
dadosJson[“result”][“address\u components”][I][“types”][0]
是否为管理区域\u 1/管理区域\u 2Hello,它不工作。错误:type'(dynamic)=>dynamic'不是'test'的type'(dynamic)=>bool'的子类型。地图上的动态变量有问题吗@具有相同错误的PABLOBARRASTILL:“(Map)=>bool”不是“test”的类型“(dynamic)=>bool”的子类型@巴布罗巴雷拉
List components = dadosJson["result"]["address_components"];

final items = components
    .where((item) =>
        item["types"].contains("administrative_area_level_1") ||
        item["types"].contains("administrative_area_level_2"))
    .toList();

items.forEach((item) => print(item["short_name"]));