python - 从 API 访问 JSON 数据

标签 python json

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

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

print(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'] 

感谢您的投入!

最佳答案

为什么要执行两次json.loads()?变化:

json.loads(json.loads(json_data))

至:

json.loads(json_data)

它应该可以工作。

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

for item in pythonVal:
    print item

如果您需要其他人更好的帮助,请同时提及问题中的示例 JSON 内容:)

关于python - 从 API 访问 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39904546/

相关文章:

python,内置打开的默认参数/参数?

ios - 使用编码协议(protocol)解析 JSON nil 值

Python编程使用API​​错误

javascript - 如何使用 Angular JS 将数据从 json 转换为对象列表

python - 如何将不同的应用程序合并到一个网页中?

python - ubuntu 12.04 上的 CUDA 安装

python - python lambdas 的实现方式与标准函数不同吗?

php - mysql_query() 和 mysql_result() 有什么区别?

javascript - 从 JavaScript 中的 URL 获取 JSON 数据?

python - 使用python在sharepoint上上传文件会导致上传的文件在内容中保留标题