我正在开发一个 Django 应用程序,它应该从支付 API 接收请求,而不是 API 将 JSON 作为“dict”返回,它返回一个字符串,这使得很难将响应用作变量,如下所示是响应和代码。任何帮助将不胜感激。
request.body
返回
{
"Body":{
"stkCallback":{
"MerchantRequestID":"31704-1162534-1",
"CheckoutRequestID":"ws_CO_170220211453010899",
"ResultCode":0,
"ResultDesc":"The service request is processed successfully.",
"CallbackMetadata":{
"Item":[
{
"Name":"Amount",
"Value":1.00
},
{
"Name":"MpesaReceiptNumber",
"Value":""
},
{
"Name":"TransactionDate",
"Value":20210217145321
},
{
"Name":"PhoneNumber",
"Value":
}
]
}
}
}
}
视图
def callback(request):
callback = json.dumps(request.body.decode('utf-8'))
body_data = json.loads(callback)
print(body_data) # returns 'str' instead of 'dict'
return render(request, 'callback.html')
答案 0 :(得分:0)
json.dumps
是不必要的。您正在做的是获取一个字符串并将其转换为 json。
假设您有一个字符串“hello”。当你写 json.dumps('hello')
时会发生什么?你得到 '"hello"'
即一个包含字符串的字符串,然后你加载它返回一个字符串给你。试试这个:
def callback(request):
body_data = json.loads(request.body.decode('utf-8'))
# Rest of your code