Python发post请求时,body参数是键值对,但是值是一串json的处理方式
在处理一个商品加购的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参数才不会出错