我必须创建这个JSON对象:
cookie = {"SX": '{"gc":1,"gsc":1,"ls":[{"itn":"20456","qty":1,"ritn":"20456","tp":0}]}'}
为此我正在使用字典和类似的列表
cookieJson = {}
sku = '20456'
d = {'itn':sku,'qty':1,'ritn':sku,'tp':0}
l.append(d)
cookieJson["SX"] = {'gc':1,'gsc':1,'ls':l}
j = json.dumps(cookieJson)
cookie = j #Error here
html = session.get('https://example.com',headers=headers, verify=False, timeout=5, cookies=cookie)
然而它抛出异常:string indices must be integers not str dictionary
我做错了什么?
编辑:
这就是一个完整的例子:
import json
sku = 5
l = []
cookieJson = {}
d = {'itn':sku,'qty':1,'ritn':sku,'tp':0}
l.append(d)
cookieJson["SX"] = {'gc':1,'gsc':1,'ls':l}
j = json.dumps(cookieJson)
print j
*.py
文件中并在不更改单个字符的情况下运行答案 0 :(得分:1)
所以我在这里尝试你的例子:
>>> import json, requests
>>> l = []
>>>
>>> cookieJson = {}
>>> sku = '20456'
>>> d = {'itn':sku,'qty':1,'ritn':sku,'tp':0}
>>> l.append(d)
>>> cookieJson["SX"] = {'gc':1,'gsc':1,'ls':l}
>>> j = json.dumps(cookieJson)
>>> html = requests.get('https://example.com', cookies=cookieJson)
Traceback (most recent call last):
[...]
TypeError: expected string or buffer
你的问题是你试图使用除字符串之外的任何东西作为cookie的值 字典,而cookie字典应该是一个简单的平面字典 字符串。所以以下工作正常:
>>> d = {'itn':sku,'qty':'1','ritn':sku,'tp':'0'}
>>> html = requests.get('https://example.com', cookies=d)
你的问题是你使用的是整数数据类型,而cookie只适用于
字符串。您不能拥有1
或0
s,也不能将dict作为值。
如果您真的坚持创建具有多个值的cookie,那么您唯一的解决方案就是执行以下操作:
>>> html = requests.get('https://example.com', cookies={"mycookie": json.dumps(cookieJson)})
在"mycookie"
键下创建包含完整json字符串作为值的cookie的位置。然后,您将反序列化cookie的值以恢复数据。