我收到了以json形式从foursquare收到的回复。我试图访问对象的某些部分,但没有成功。我如何访问说出对象的地址?这是我尝试过的代码。
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
}
],
可以找到完整的回复here
答案 0 :(得分:1)
您的代码(至少在加载和访问对象时)对我来说是正确的。我从一个文件中加载了json(因为我没有你的foursquare id)并且它运行正常。您正确使用对象/字典键和数组位置导航到您想要的。但是,您在向下钻取到数据的行中拼错了“地址”。添加缺少的'a'使它工作。我也在纠正你发布的网址中的拼写错误。
我回答了这个问题,假设您链接到的示例JSON是data
中存储的内容。如果不是这种情况,那么查看data
中存储的python的相对简单的方法是import pprint
,并使用它如下:pprint.pprint(data)
。
您还可以通过使用-i
开关运行程序来启动交互式python shell,并自行检查变量。
答案 1 :(得分:0)
喜欢这样
addrs=data['items'][2]['location']['address']
答案 2 :(得分:0)
data["items"][2]["location"]["address"]
这将为您访问该地址。
答案 3 :(得分:0)
对于dict,如果是数组和字符串索引,则可以使用整数索引进入任何级别的嵌套。 就像你的情况一样,item是一个数组
item[0]['location']
现在items [0]是一个字典,所以我们通过字符串索引访问
item[0]['location']['address]
现在又是一个对象,我们使用字符串索引
{{1}}