доступ к элементам в выходном файле simplejson.load () - PullRequest
1 голос
/ 12 сентября 2011

у меня есть словарь (?) Данных, возвращаемых функцией simplejson.load (). это выглядит так ...

{'status': 'OK', 'results': [{'geometry': {'location_type': 'APPROXIMATE', 'bounds': {'northeast': {'lat': 53.86121, 'lng': -2.045072}, 'southwest': {'lat': 53.80570600000001, 'lng': -2.162588}}, 'viewport': {'northeast': {'lat': 53.8697753, 'lng': -2.0725853}, 'southwest': {'lat': 53.81711019999999, 'lng': -2.2006447}}, 'location': {'lat': 53.84345099999999, 'lng': -2.136615}}, 'address_components': [{'long_name': 'Trawden', 'types': ['sublocality', 'political'], 'short_name': 'Trawden'}, {'long_name': 'Colne', 'types': ['locality', 'political'], 'short_name': 'Colne'}, {'long_name': 'Lancashire', 'types': ['administrative_area_level_2', 'political'], 'short_name': 'Lancs'}, {'long_name': 'United Kingdom', 'types': ['country', 'political'], 'short_name': 'GB'}], 'formatted_address': 'Trawden, Colne, Lancashire, UK', 'types': ['sublocality', 'political']}]}

Как мне добраться, например, результаты-> геометрия-> местоположение-> широта

Является ли эта структура обычным словарем Python?

РЕДАКТИРОВАТЬ: пожалуйста, кто-то может объяснить также функцию simplejson.dumps (). Я не нахожу документы очень поучительными.

спасибо

Редактировать не-OP: вот JSON, довольно напечатанный:

{
  "status":"OK",
  "results":[
    {
      "geometry":{
        "location":{
          "lat":53.843450999999988,
          "lng":-2.1366149999999999
        },
        "location_type":"APPROXIMATE",
        "viewport":{
          "northeast":{
            "lat":53.869775300000001,
            "lng":-2.0725853000000001
          },
          "southwest":{
            "lat":53.817110199999988,
            "lng":-2.2006446999999998
          }
        },
        "bounds":{
          "northeast":{
            "lat":53.86121,
            "lng":-2.0450719999999998
          },
          "southwest":{
            "lat":53.805706000000008,
            "lng":-2.162588
          }
        }
      },
      "address_components":[
        {
          "long_name":"Trawden",
          "short_name":"Trawden",
          "types":[
            "sublocality",
            "political"
          ]
        },
        {
          "long_name":"Colne",
          "short_name":"Colne",
          "types":[
            "locality",
            "political"
          ]
        },
        {
          "long_name":"Lancashire",
          "short_name":"Lancs",
          "types":[
            "administrative_area_level_2",
            "political"
          ]
        },
        {
          "long_name":"United Kingdom",
          "short_name":"GB",
          "types":[
            "country",
            "political"
          ]
        }
      ],
      "formatted_address":"Trawden, Colne, Lancashire, UK",
      "types":[
        "sublocality",
        "political"
      ]
    }
  ]
}

1 Ответ

4 голосов
/ 12 сентября 2011

Да, это так.Если вы сохраните его в переменной с именем d, вы будете использовать ...

d['results'][0]['geometry']['location']

и так далее.Обратите внимание на [0] из-за того факта, что вхождение в список содержит ключ 'geometry'.

simplejson.load() отображает объекты JSON в Python dict s, а списки JSON - list s.Очень просто;не переусердствуйте.


simplejson.dumps() просто делает противоположное simplejson.loads() - он берет любой стандартный объект Python и выгружает его в строку, которая является JSON-представлением этого объекта.Например:

>>> q = {}
>>> q['foo'] = 'bar'
>>> q[1] = 'baz'
>>> simplejson.dumps(q)
'{"1": "baz", "foo": "bar"}'
...