使用 Python 解析 JSON - 键区分大小写
Parsing JSON with Python - Case Sensitivity for Keys
我正在尝试使用 json.load 从多个 REST 端点读取 json - 我感兴趣的密钥有不同的情况,具体取决于哪个端点(有些是 'name'其他人是'Name')。我尝试了以下方法来解决它:
for x in urls:
response_json = json.load(urllib.request.urlopen(x))
try:
projects.append(response_json['attributes']['Name'])
print(response_json['attributes']['Name'])
except:
projects.append(response_json['attributes']['name'])
print(response_json['attributes']['name'])
但是,对于 'name' 键的两个排列,我都收到了 KeyErrors。如果我删除 TRY...EXCEPT 并且只指定一种情况,代码工作正常,但我需要知道每个 URL 是什么。为什么会这样?有没有更好的方法?
您应该只使用 try 和 catch 进行错误处理。
您可以使用简单的 if-else 条件检查,而不是使用 try 和 catch 来拆分代码。它将允许您检查更多条件。
请记住,下面可能不是确切的代码,因为我没有你的 JSON,但是,这应该会指导你找到这里的解决方案。
if 'Name' in response_json['attributes']:
print(response_json['attributes']['Name'])
elif 'name' in response_json['attributes']:
print(response_json['attributes']['name'])
else:
print(response_json['attributes'].keys())
我正在尝试使用 json.load 从多个 REST 端点读取 json - 我感兴趣的密钥有不同的情况,具体取决于哪个端点(有些是 'name'其他人是'Name')。我尝试了以下方法来解决它:
for x in urls:
response_json = json.load(urllib.request.urlopen(x))
try:
projects.append(response_json['attributes']['Name'])
print(response_json['attributes']['Name'])
except:
projects.append(response_json['attributes']['name'])
print(response_json['attributes']['name'])
但是,对于 'name' 键的两个排列,我都收到了 KeyErrors。如果我删除 TRY...EXCEPT 并且只指定一种情况,代码工作正常,但我需要知道每个 URL 是什么。为什么会这样?有没有更好的方法?
您应该只使用 try 和 catch 进行错误处理。
您可以使用简单的 if-else 条件检查,而不是使用 try 和 catch 来拆分代码。它将允许您检查更多条件。 请记住,下面可能不是确切的代码,因为我没有你的 JSON,但是,这应该会指导你找到这里的解决方案。
if 'Name' in response_json['attributes']:
print(response_json['attributes']['Name'])
elif 'name' in response_json['attributes']:
print(response_json['attributes']['name'])
else:
print(response_json['attributes'].keys())