从API访问JSON数据

2024-09-29 19:26:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写一个脚本从API下载图像,我设置了一个循环,如下所示:

    response = requests.get(url, params=query)
    json_data = json.dumps(response.text)
    pythonVal = json.loads(json.loads(json_data))
    print(pythonVal)

打印(pythonVal)返回:

 {
  "metadata": {
    "code": 200,
    "message": "OK",
    "version": "v2.0"
  },
  "data": {
  "_links": {
    "self": {
      "href": "redactedLink"
    }
  },
  "id": "123456789",
  "_fixed": true
    ,
  "type": "IMAGE",
  "source": "social media",
  "source_id": "1234567890_1234567890",
  "original_source": "link",
  "caption": "caption",
  "video_url": null,
    "share_url": "link",
    "date_submitted": "2016-07-11T09:34:35+00:00",
  "date_published": "2016-09-11T16:30:26+00:00",

我不断收到一个错误,上面写着:

UnicodeEncodeError: 'ascii' codec can't encode character '\xc4' in
position 527: ordinal not in range(128)

对于pythonVal变量,如果我只是将其设置为json.loads(json_data),它会打印出JSON响应,但是当我尝试执行pythonVal['data']时,会出现另一个错误,如下所示:

TypeError: string indices must be integers

最终,我希望能够通过如下操作从中获取数据

 pythonVal['data']['_embedded']['uploader']['username'] 

谢谢你的意见!你知道吗


Tags: in脚本apiidjsonurlsourcedata
2条回答

将以下内容置于代码之上。其工作原理是将Python的本机ascii编码重写为UTF-8。你知道吗

# -*- coding: utf-8 -*-

第二个错误是因为您已经获取了字符串,并且需要整数索引来获取字符串的字符。你知道吗

为什么要做json.loads()两次?更改:

json.loads(json.loads(json_data))

收件人:

json.loads(json_data)

它应该有用。你知道吗

现在由于在执行pythonVal['data']时出现错误TypeError: string indices must be integers,这意味着pythonVal的值是list类型,而不是dict。相反,请执行以下操作:

for item in pythonVal:
    print item

如果您想从其他人那里得到更好的帮助,请在问题中提及示例JSON内容:)

相关问题 更多 >

    热门问题