【问题标题】:Having trouble with JSON and Python [duplicate]JSON和Python遇到问题[重复]
【发布时间】:2020-06-21 20:59:39
【问题描述】:

这两个都是新手。

我正在使用 requests.get 访问一个 API,它返回一个包含俱乐部和活跃俱乐部数量的数组。

clubs = requests.get ('https://api.sumting.com/so on/and so forth', headers={'Authorization': myToken})

clubdata = clubs.json()
print (clubdata)

我得到这样的东西:

{
  "clubs": [
    {
      "golf_association_id": 1,
      "club_number": 2,
      "club_name": "Otterkill Golf & Country Club",
      "phone": "8454272020",
      "is_dac": false,
      "technology_provider": "Nope",
      "email": "",
      "authorized": null,
      "is_test": false,
      "status": "Active",
      "club_category": "Private",
      "short_name": "",
      "website": "",
      "usga_version": "",
      "handicap_chairperson": "",
      "date": "2019-08-13T14:06:55.928Z",
      "created_at": "2019-08-13T14:06:55.928Z",
      "updated_at": "2019-08-13T14:06:55.928Z",
      "logo": null,
      "club_type": "",
      "alt_text": null,
      "id": 10001,
      "city": "Campbell Hall",
      "state": "NY"
    }
  ],
  "meta": {
    "active_clubs_count": 548
  }
}

我需要遍历“id”并调用另一个 api。我尝试过的几件事中最新的是这样的:

clubs = requests.get ('https://api.sumting.com/so on/and so forth', headers={'Authorization': myToken})

clubdata = clubs.json()
##print (clubdata)

decoded = json.loads(clubdata)

# Access data
for x in decoded['id']:
    print (x['club_name'])

结果如下:

Traceback(最近一次调用最后一次): 文件“C:\Program Files (x86)\Python38-32\Scripts\test-login.py”,第 28 行,在 解码 = json.loads(clubdata) 文件“C:\Program Files (x86)\Python38-32\lib\json__init__.py”,第 341 行,加载中 raise TypeError(f'JSON对象必须是str, bytes or bytearray, ' TypeError: JSON 对象必须是 str、bytes 或 bytearray,而不是 dict

我显然不明白我需要了解什么,但已经走到了这一步,我希望在正确的方向上轻轻推动将帮助我继续前进。

提前致谢。

【问题讨论】:

标签: python json


【解决方案1】:

看起来您可能没有抓住 JSON 的正确部分。在执行循环之前,请尝试打印出 clubs 键(因为响应返回一个名为 "clubs" 的键),例如

print(decoded['clubs']) # <-- does this show you the list?  

如果上面显示错误,请找出原因。例如。 print(decoded.keys()) 返回什么?如果上面显示了俱乐部列表,那么您可以循环遍历它,例如

for x in decoded['clubs']:
    print (x['club_name'])

希望对你有帮助!

【讨论】:

  • print (clubdata["clubs"][1]["id"]) 工作并让我走得更远。我有一个“啊哈”的时刻。感谢您的帮助。
  • 很高兴为您提供帮助!记得为您认为有帮助的 cmets/answers 点赞。
猜你喜欢
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
相关资源
最近更新 更多