如何使用python从复杂的Json中提取数据

时间:2016-09-17 19:20:30

标签: python json

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "1600",
               "short_name" : "1600",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Amphitheatre Parkway",
               "short_name" : "Amphitheatre Pkwy",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Mountain View",
               "short_name" : "Mountain View",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Santa Clara County",
               "short_name" : "Santa Clara County",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "California",
               "short_name" : "CA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "94043",
               "short_name" : "94043",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
         "geometry" : {
            "location" : {
               "lat" : 37.4224484,
               "lng" : -122.0843249
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 37.4237973802915,
                  "lng" : -122.0829759197085
               },
               "southwest" : {
                  "lat" : 37.4210994197085,
                  "lng" : -122.0856738802915
               }
            }
         },
         "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
}

如何从json中检索formatted_address等下的LatLonggeometry>Location。大多数json教程都是用简单的json文件解释的。 请帮助我,帮助我找到一些好的教程

2 个答案:

答案 0 :(得分:3)

实际上,简单的JSON和复杂的JSON并没有那么不同。你可以说复杂的JSON 里面有很多更简单的JSON ,所以如果你知道如何从简单的数据中获取数据,你最终知道如何从复合体中获取数据< / p>

无论如何,将JSON对象视为dictionaries,将JSON数组视为lists。要从dicts获取数据,请使用key作为值。要从列表中获取数据,请使用值的index(位置)。

所以,在你的情况下:

lat = json["results"][0]["geometry"]["location"]["lat"]
long = json["results"][0]["geometry"]["location"]["lng"]

formatted_address = json["results"][0]["formatted_address"]

注意如何通过键进行导航,以及在从键中检索值时如何更深入

答案 1 :(得分:0)

您可以通过以下链接关注json库的文档:python2python3 如果您有任何特定问题,可以定义跟踪或代码部分以找到正确的答案。