2017-08-25 51 views
-1

我成功地填充了一个json.load(响应)请求并能够导航/查看结果,并且看起来是我期待的。然而,当我尝试访问属性时,我得到一个KeyError。在这种情况下,我需要将一个局部变量设置为“SHORT_NAME”属性。python 2.7 urllib2.Request KeyError

{u'fieldAliases ':{u'SHORT_NAME':u'SHORT_NAME”,u'OBJECTID ': u'OBJECTID'},u'fields ':[{u'alias':u'OBJECTID ',u'type': u'esriFieldTypeOID',u'name':u'OBJECTID'},{u'alias':u'SHORT_NAME', u'length':50,u'type':u' esriFieldTypeString',u'name': u'SHORT_NAME'}],u'displayFieldName':u'LONG_NAME',u'features': [{u'attributes':{u'SHORT_NAME':u'Jensen Beach to木星进 ' u'OBJECTID':17}}]}

我的Python代码访问上述:

reqAp = urllib2.Request(queryURLAp, paramsAp) 
responseAp = urllib2.urlopen(reqAp) 
jsonResultAp = json.load(responseAp) #all good here! above example is what this contains 

#trying to set variable to the SHORT_NAME attribute 
for featureAp in jsonResultAp['features']: 
    aqp = feature['attributes']['SHORT_NAME'] 
    #this fails with: "KeyError: 'SHORT_NAME'" 

很明显,“SHORT_NAME”在那里,所以我不太确定我做错了什么。

感谢您的任何反馈!

+0

你怎么否决一个问题吗? geesh。 – user2309282

+1

在for行中,您将变量featureAp命名,但在循环中使用了一个特性变量。我认为这是一个错字? – lancew

+0

宾果!谢谢你收到。简单! – user2309282

回答

1

变化:

aqp = feature['attributes']['SHORT_NAME'] 

要:

aqp = featureAp['attributes']['SHORT_NAME'] 
+0

我们走了。你在上面的评论中正确回答了它。能够将其标记为帖子的答案。感谢您的锐利眼睛! – user2309282