Django 请求将 JSON 返回为“str”而不是“dict”

时间:2021-02-18 12:09:50

标签: django django-models django-views django-templates

我正在开发一个 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')

1 个答案:

答案 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
相关问题