[英]How to convert JSON string to Python Object (Dictionary)
我有一個奇怪的問題。 運行 Django 3.0.1,在我看來我有一個 try 語句。 出於某種原因,我無法將 JSON 字符串轉換為 Python 對象(dict)。 這是我的代碼:
try:
message_to_clientsservice = {
'id': id_id,
'name': 'create-member-client-for-tenant-setup',
'payload': {
'clientName': client_name,
'kbCorporationId': int(kb_corp_id),
'email': email,
'clientTypeId': client_type_id,
'address': {
'countryCode': country_code,
},
'phoneNumbers': []
}
}
clientsservice_request_header = {
'Content-Type': 'application/json',
'ServiceAccessToken': service_access_token,
'Ocp-Apim-Subscription-Key': ocp_apim_subscription_key,
'Authorization': 'Bearer ' + bearer_token
}
# print(message_to_clientsservice)
# print(type(message_to_clientsservice))
# print(json.dumps(message_to_clientsservice))
# print(type(clientsservice_request_header))
# print(clientsservice_request_header)
clients_service_response = requests.post(clientsservice_url,
headers=clientsservice_request_header,
data=json.dumps(message_to_clientsservice))
print(clients_service_response.status_code)
json_data_scrambledegg = clients_service_response.text
for r in (('\\', ''), ('{\\', ''), ('\"\"}\"}', '\"\"}}'), ('\"payload\":\"', '\"payload\":')):
json_data_scrambledegg = json_data_scrambledegg.replace(*r)
print(type(json_data_scrambledegg))
print(json_data_scrambledegg)
data = json.loads(json_data_scrambledegg)
print(data)
except:
print('Something went wrong! Try again or contact your Sysadmin!')
messages.warning(request, 'Something went wrong! Try again or contact your Sysadmin!')
return render(request, 'create_member_company/create_member_feedback.html')
else:
messages.success(request, 'Your Message was sent successfully!')
return render(request, 'create_member_company/create_member_feedback.html')
並獲得此輸出:
January 09, 2020 - 04:58:01
Django version 3.0.1, using settings 'erm_admin.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
200
<class 'str'>
{"id":"66995ab6-2962-465c-aa52-f68108f2ac97","name":"create-member-client-for-tenant-setup-response","correlationId":"025bb4aa-9396-4202-bcbc-fcbabfd498a8","payload":{"newlyCreatedClient":{"clientId":7270,"clientName":"Milk Man 1","corporationId":4520226,"corporationName":"Milk Man 1"},"suggestedExistingClients":null,"success":true,"errorMessage":""}}
Something went wrong! Try again or contact your Sysadmin!
[09/Jan/2020 04:58:07] "POST /create_member/ HTTP/1.1" 200 7885
我的“嘗試”中的最后兩行失敗了。 它們在這里(來自上面的 try 語句)。
data = json.loads(json_data_scrambledegg)
print(data)
response.json()
即可獲取字典:try:
...
clients_service_response = requests.post(clientsservice_url,
headers=clientsservice_request_header,
data=json.dumps(message_to_clientsservice))
print(clients_service_response.status_code)
data = clients_service_response.json() # this line!!
print(data)
except:
...
else:
...
try:
message_to_clients_service = {
'id': id_id,
'name': 'create-member-client-for-tenant-setup',
'payload': {
'clientName': client_name,
'kbCorporationId': int(kb_corp_id),
'email': email,
'clientTypeId': client_type_id,
'address': {
'countryCode': country_code,
},
'phoneNumbers': []
}
}
clients_service_request_header = {
'Content-Type': 'application/json',
'ServiceAccessToken': service_access_token,
'Ocp-Apim-Subscription-Key': ocp_apim_subscription_key,
'Authorization': 'Bearer ' + bearer_token
}
clients_service_response = requests.post(clientsservice_url,
headers=clients_service_request_header,
json=message_to_clients_service)
print(clients_service_response.status_code)
data = clients_service_response.json() # this line!!
print(data)
except Exception as e:
print(e) # this line !!
print('Something went wrong! Try again or contact your Sysadmin!')
messages.warning(request, 'Something went wrong! Try again or contact your Sysadmin!')
return render(request, 'create_member_company/create_member_feedback.html')
else:
messages.success(request, 'Your Message was sent successfully!')
return render(request, 'create_member_company/create_member_feedback.html')
@aasmpro
我確實將代碼更改為您的建議。
clients_service_response = requests.post(clientsservice_url,
headers=clientsservice_request_header,
data=json.dumps(message_to_clientsservice))
print(clients_service_response.status_code)
data = clients_service_response.json()
# json_data_scrambledegg = clients_service_response.json(encoding='utf-8-sig')
print(data)
它不工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.