我有一个奇怪的问题。运行Django 3.0.1,在我看来,我有一条try语句。由于某种原因,我无法将JSON字符串转换为Python对象(字典)。这是我的代码:
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
我的“尝试”中的最后2行失败。它们是(来自上面的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:
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')