Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python访问嵌套对象_Python_Json_List_Object - Fatal编程技术网

用python访问嵌套对象

用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=

我从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=''+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不知道如何做。