JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON 基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一个子集。JSON 采用完全独立于语言的文本格式,但也使用了类似于 C 语言家族的习惯(包括 C, C++, C#, Java, JavaScript, Perl, Python 等)。这些特性使得 JSON 成为理想的数据交换语言。
在 Python 中,JSON 数据通常以字典的形式存在,可以使用 Python 的内置 json
模块来解析和处理这些数据。
JSON 数据主要由以下几种类型构成:
{}
表示。[]
表示。以下是一个简单的 Python 示例,展示如何使用 requests
库获取 API 响应并解析 JSON 数据:
import requests
import json
# 发送 GET 请求到 API
response = requests.get('https://api.example.com/data')
# 检查请求是否成功
if response.status_code == 200:
# 解析 JSON 响应
data = response.json()
# 打印解析后的字典
print(json.dumps(data, indent=4))
else:
print(f"请求失败,状态码:{response.status_code}")
问题1:JSONDecodeError
当 API 返回的数据不是有效的 JSON 格式时,可能会遇到 json.decoder.JSONDecodeError
。
原因:API 返回的数据可能包含错误信息或其他非 JSON 内容。
解决方法:
try:
data = response.json()
except json.decoder.JSONDecodeError as e:
print(f"JSON解析错误:{e}")
print("原始响应内容:", response.text)
问题2:KeyError
当尝试访问 JSON 字典中不存在的键时,会引发 KeyError
。
原因:API 返回的数据结构可能与预期不符。
解决方法:
try:
value = data['non_existent_key']
except KeyError:
print("键不存在")
问题3:网络请求失败
如果网络请求失败,requests.get()
可能会抛出异常。
原因:网络问题或 API 不可用。
解决方法:
try:
response = requests.get('https://api.example.com/data')
response.raise_for_status() # 抛出 HTTPError 异常
except requests.exceptions.RequestException as e:
print(f"网络请求失败:{e}")
通过这些方法和示例代码,你可以有效地解析和处理 API 返回的 JSON 数据,并处理可能遇到的常见问题。
领取专属 10元无门槛券
手把手带您无忧上云