Python Accessing Nested Json Data [Duplicate]

Python Accessing Nested Json Data [Duplicate]

I'm trying to get the zip code for a particular city using zippopotam.us. I have the following code which works, except when I try to access the post code key which returns TypeError: expected string or buffer

r = requests.get(')
j = r.json()

data = json.loads(j)

print j['state']
print data['places']['latitude']

Full JSON output:

{
"country abbreviation": "US",
"places": [
    {
        "place name": "Belmont",
        "longitude": "-71.4594",
        "post code": "02178",
        "latitude": "42.4464"
    },
    {
        "place name": "Belmont",
        "longitude": "-71.2044",
        "post code": "02478",
        "latitude": "42.4128"
    }
],
"country": "United States",
"place name": "Belmont",
"state": "Massachusetts",
"state abbreviation": "MA"
}
1

4 Answers

Places is a list and not a dictionary. This line below should therefore not work:

print data['places']['latitude']

You need to select one of the items in places and then you can list the place's properties. So to get the first post code you'd do:

print data['places'][0]['post code']

I did not realize that the first nested element is actually an array. The correct way access to the post code key is as follows:

r = requests.get(')
j = r.json()

print j['state']
print j['places'][1]['post code']

In your code j is Already json data and j['places'] is list not dict.

 r = requests.get(')
 j = r.json()

 print j['state']
 for each in j['places']:
    print each['latitude']

I'm using this lib to access nested dict keys

 import requests
 from addict import Dict
 r = requests.get(')
 j = Dict(r.json())

 print j.state
 print j.places[1]['post code']  # only work with keys without '-', space, or starting with number 
Chloe Bennett
Author

Chloe Bennett

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.