【问题标题】:Converting request body to json Django Python将请求正文转换为 json Django Python
【发布时间】:2021-08-19 01:55:09
【问题描述】:

下面是python Django中的一个视图和它给出的输出

代码

@csrf_exempt
def stk_push_callback(request):

    data = request.body
    print(data)

    got_data = json.loads(data.decode("utf-8"))

    result_code = got_data['Body']['stkCallback']['ResultCode']
    result_desc = got_data['Body']['stkCallback']['ResultDesc']

    print(' ')
    print('ResultCode: ', result_code)
    print(result_desc)
    print(' ')

    room = room_val()
    check_in = in_val()
    check_out = out_val()
    user = user_val()

    if result_code == 0:
        booking = book_room(user, room, check_in, check_out)
        print (booking)
    
        return render(request, 'booking/paymentcomplete.html')

    else:
        return render(request, 'booking/paymenterror.html')

输出print(data)

b'{"Body":{"stkCallback":{"MerchantRequestID":"9088-17223944-1","CheckoutRequestID":"ws_CO_310520212138262746","ResultCode":1032,"ResultDesc":"Request cancelled by user"}}}'

如何将输出转换为 json,以及如何访问 "ResultCode":1032 值以进行进一步处理?问候。

【问题讨论】:

  • 如果您使用request.POSTrequest.GET 而不是request.body 会怎样
  • 视图是一个回调 url,API 向我发送 POST json 数据

标签: python json django


【解决方案1】:

我正在使用电话,很难解释更多。

import json
data = request.body
data_dict = json.loads(data.decode("utf-8")) 
print(data_dict['Body']['stkCallback']['ResultCode']) 

更多信息请查看How to convert bytes type to dictionary?答案。

【讨论】:

  • 你好,我试过了,但它会产生 JSONDecodeError Expecting value: line 1 column 1 (char 0)
  • print(request.POST) 如果您的方法是发布的,请检查它的类型。在这里回复,我们继续调试。
【解决方案2】:

使用json() 方法。

data = request.json()

【讨论】:

  • 嗨,产生 AttributeError: 'WSGIRequest' 对象没有属性 'json'
猜你喜欢
  • 1970-01-01
  • 2020-08-21
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多