2014-04-26 7 views
23

एक्सेसिंग मैं zippopotam.us का उपयोग कर किसी विशेष शहर के लिए ज़िप कोड प्राप्त करने का प्रयास कर रहा हूं।पायथन एक्सेसिंग जेएसओएन डेटा

{ 
"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" 
} 

आपकी मदद के लिए धन्यवाद: मैं निम्नलिखित कोड है, जो काम करता है जब मैं post code कुंजी जो TypeError: expected string or buffer

r = requests.get('http://api.zippopotam.us/us/ma/belmont') 
j = r.json() 

data = json.loads(j) 

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

पूर्ण JSON उत्पादन देता है तक पहुँचने का प्रयास को छोड़कर है।

उत्तर

13

मुझे एहसास नहीं हुआ कि पहला नेस्टेड तत्व वास्तव में एक सरणी है। पोस्ट कोड कुंजी तक सही तरीका पहुंच निम्नानुसार है:

r = requests.get('http://api.zippopotam.us/us/ma/belmont') 
j = r.json() 

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

स्थान एक सूची है और शब्दकोश नहीं है। इसलिए नीचे दी गई रेखा को काम नहीं करना चाहिए:

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

आपको स्थानों में से किसी एक आइटम का चयन करने की आवश्यकता है और फिर आप स्थान की संपत्तियों को सूचीबद्ध कर सकते हैं। तो पहली पोस्ट कोड तुम क्या चाहते हैं पाने के लिए:

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

अपने कोड j में पहले से ही json डेटा और j है [ 'स्थानों'] सूची dict नहीं है।

r = requests.get('http://api.zippopotam.us/us/ma/belmont') 
j = r.json() 

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

मैं नेस्टेड dict कुंजी

https://github.com/mewwts/addict

import requests 
from addict import Dict 
r = requests.get('http://api.zippopotam.us/us/ma/belmont') 
ad = Dict(r.json()) 

print j.state 
print j.places[1]['post code'] # only work with keys without '-', space, or starting with number 
पहुँचने के लिए इस lib उपयोग कर रहा हूँ
संबंधित मुद्दे