用python访问嵌套对象
我从foursquare收到了一个json形式的响应。我尝试访问对象的某些部分,但没有成功。如何访问对象的地址?这是我试过的代码用python访问嵌套对象,python,json,list,object,Python,Json,List,Object,我从foursquare收到了一个json形式的响应。我尝试访问对象的某些部分,但没有成功。如何访问对象的地址?这是我试过的代码 url = 'https://api.foursquare.com/v2/venues/explore' params = dict(client_id=foursquare_client_id, client_secret=foursquare_client_secret, v='20170801', ll=
url = 'https://api.foursquare.com/v2/venues/explore'
params = dict(client_id=foursquare_client_id,
client_secret=foursquare_client_secret,
v='20170801', ll=''+lat+','+long+'',
query=mealType, limit=100)
resp = requests.get(url=url, params=params)
data = json.loads(resp.text)
msg = '{} {}'.format("Restaurant Address: ",
data['response']['groups'][0]['items'][0]['venue']['location']['address'])
print(msg)
以下是json响应的一个示例:
"items": [
{
"reasons": {
"count": 0,
"items": [
{
"summary": "This spot is popular",
"type": "general",
"reasonName": "globalInteractionReason"
}
]
},
"venue": {
"id": "412d2800f964a520df0c1fe3",
"name": "Central Park",
"contact": {
"phone": "2123106600",
"formattedPhone": "(212) 310-6600",
"twitter": "centralparknyc",
"instagram": "centralparknyc",
"facebook": "37965424481",
"facebookUsername": "centralparknyc",
"facebookName": "Central Park"
},
"location": {
"address": "59th St to 110th St",
"crossStreet": "5th Ave to Central Park West",
"lat": 40.78408342593807,
"lng": -73.96485328674316,
"labeledLatLngs": [
{
"label": "display",
"lat": 40.78408342593807,
"lng": -73.96485328674316
}
],
完整的响应如下所示
addrs=data['items'][2]['location']['address']
像这样
addrs=data['items'][2]['location']['address']
data[“items”][2][“location”][“address”]
这将为您访问地址。数据[“项目”][2][“位置”][“地址”]
这将为您访问地址。如果是数组,则使用整数索引;如果是dict,则使用字符串索引,则可以进入任何嵌套级别。 与您的情况类似,items是一个数组
#items[int index]
items[0]
现在项[0]是一个字典,所以我们通过字符串索引进行访问
item[0]['location']
现在又是一个对象,我们使用字符串索引
item[0]['location']['address]
对于数组,您可以使用整数索引;对于dict,您可以使用字符串索引。 与您的情况类似,items是一个数组
#items[int index]
items[0]
现在项[0]是一个字典,所以我们通过字符串索引进行访问
item[0]['location']
现在又是一个对象,我们使用字符串索引
item[0]['location']['address]
您的代码(至少在加载和访问对象方面)在我看来是正确的。我从一个文件中加载了json(因为我没有您的foursquare id),它工作得很好。您正确地使用了对象/字典键和数组位置来导航到所需的内容。但是,您在向下钻取数据的行中错贴了“地址”。添加缺少的“a”使其工作。我还在纠正你发布的URL中的错误
我回答这个问题时假设您链接到的示例JSON是存储在数据中的内容。如果不是这样的话,那么查看python在data
中存储的确切内容的相对简单的方法是导入pprint
并像这样使用它:pprint.pprint(data)
您还可以通过使用-i
开关运行程序来启动交互式python shell,并亲自检查变量。您的代码(至少在加载和访问对象方面)在我看来是正确的。我从一个文件中加载了json(因为我没有您的foursquare id),它工作得很好。您正确地使用了对象/字典键和数组位置来导航到所需的内容。但是,您在向下钻取数据的行中错贴了“地址”。添加缺少的“a”使其工作。我还在纠正你发布的URL中的错误
我回答这个问题时假设您链接到的示例JSON是存储在数据中的内容。如果不是这样的话,那么查看python在data
中存储的确切内容的相对简单的方法是导入pprint
并像这样使用它:pprint.pprint(data)
您还可以通过使用-i
开关运行程序来启动交互式python shell,并亲自检查变量。包括运行代码时发生的情况将提高您收到的答案的质量和特异性。更新问题后,假设您正确导入了必需的模块并提供了foursquare凭据,那么您的代码应该可以像现在一样工作。如果不是,那么共享您看到的错误或错误行为将有助于立即发现问题。几乎是重复的-虽然在这种情况下,问题是一个打字错误,而不是OP不知道如何做。包括运行代码时发生的情况将提高您收到的答案的质量和特异性。更新问题后,假设您正确导入了必需的模块并提供了foursquare凭据,那么您的代码应该可以像现在一样工作。如果不是,那么分享你看到的错误或错误行为应该有助于使问题立即变得明显。几乎是重复的——尽管在这种情况下,问题是打字错误,而不是OP不知道如何做。