从服务器收到以下消息:
"{\"msgTm\": \"2024-07-01T14:36:38.109944Z\", \"message\": \"Wrong file extension: .xlsx. Available values: .pdf .jpg, .jpeg, .png\"}"
我正在尝试将此字符串转换为字典
res = response.json()
但结果我得到了这样的一行:
{"msgTm": "2024-07-01T14:42:53.114348Z", "message": "Wrong file extension: .xlsx. Available values: .pdf .jpg, .jpeg, .png"}
返回的对象类型是字符串,而不是字典。
此外,如果我尝试将单独的字符串转换为字典,一切都会正常:
import json
response = '{\"msgTm\": \"2024-07-01T14:36:38.109944Z\", \"message\": \"Wrong file extension: .xlsx. Available values: .pdf .jpg, .jpeg, .png\"}'
res = json.loads(response)
print(res)
print(type(res))
{'msgTm': '2024-07-01T14:36:38.109944Z', 'message': 'Wrong file extension: .xlsx. Available values: .pdf .jpg, .jpeg, .png'}
<class 'dict'>
但它不是这样工作的:
if response.status_code == 200:
access_token = "токен"
headers = {'Authorization': f'Bearer {access_token}'}
files = {
'structuredDocument': (file_name, file_io_obj),
}
response = requests.post('https://test.ru', headers=headers, files=files, verify=False)
return response.json()
感谢@andreymal,解决方案是重新转换为字典:
我会建议一个稍微不同的解决方案。您可以简单地使用
eval标准库中的函数。您只需将一个字符串传递给该函数,它就会将该字符串转换为字典。该函数只是返回执行代码的值。在本例中 - 带有字典的字符串。例子:输出: