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参数才不会出错

posted @ 2021-05-04 21:06  童薰  阅读(1232)  评论(0编辑  收藏  举报