在處理一個商品加購的post的請求時,遇到一個奇怪的body,鍵值對參數的值是一串json,如下:
goods={"quick":0,"spec":[],"goods_id":329,"number":1,"parent":0}
當時第一反應是寫成
data={'goods':{"quick":0,"spec":[],"goods_id":329,"number":1,"parent":0}},pycharm就直接報錯了
然后第二種想法就是賦值
r={"quick":0,"spec":[],"goods_id":329,"number":1,"parent":0}
data={'goods':r}
能運行,但是響應結果報錯,並不是成功加入購物車的結果;
最后,嘗試json.dumps成功
cart1 = {"quick": 1, "spec": [], "goods_id": 329, "number": 1, "parent": 0}
cart2 = json.dumps(cart1)
cart = {'goods': cart2}
cartadd = test.post('https://www.go-easy.com.cn/flow.php?step=add_to_cart', data=cart)
print(cartadd.text)
得到想要的結果,我是Python+requests框架的初學者,不太明白為什么要這么做,想了一下應該是:
該鍵值對的值是json,必須為json結構的,直接在Python中編輯出這段json,默認為Python數據結構,要使用json.dumps將其轉換為json數據結構,這樣該post請求中的body參數才不會出錯