当值存在蟒蛇
问题描述:
的Python nonetype错误所以我的JSON数据看起来像下面。我的代码行:print(jsonData["orderData"]["txnType"])
打印出来的字SALE然后我得到一个错误说TypeError: 'NoneType' object is not subscriptable
随着我的理解为什么我得到这个错误,如果值是明显存在并打印?当值存在蟒蛇
{
'orderData':{
'date':'2017-08-29T12:55:19-07:00',
'receipt':'A2ZC5N96',
'promo':{
'@nil':'true'
},
'pmtType':'PYPL',
'txnType':'SALE',
'item':'37',
'amount':'104.28',
'site':'PASSIOPROD',
'affi':'BCPATRON2',
'country':'US',
'state':'OH',
'lastName':{
'@nil':'true'
},
'firstName':{
'@nil':'true'
},
'currency':'USD',
'email':{
'@nil':'true'
},
'zip':'43206',
'rebillAmount':'97.00',
'processedPayments':'1',
'futurePayments':'998',
'nextPaymentDate':'2017-09-29T12:55:19-07:00',
'status':'ACTIVE',
'accountAmount':'44.09',
'role':'AFFILIATE',
'customerDisplayName':{
'@nil':'true'
},
'title':'aaa',
'recurring':'true',
'physical':'false',
'customerRefundableState':'REFUNDABLE'
}
}
全码:
devKeys = ["KEUYS"]
apiKeys = ["API"]
sales = []
refunds = []
totalSales = []
x = 0
while x < len(devKeys):
y = 0
indSale = 0
indRefund = 0
indTotal = 0
totalTransactions = 0
payload = devKeys[x]+":"+apiKeys[x]
headers = {"Accept": "application/json", "Authorization": payload}
r = requests.get('https://api.clickbank.com/rest/1.3/orders/list', headers=headers)
jsonData = json.loads(r.text)
text = r.text
if ":[" not in text: #This line is here because the JSON looks different if theres only one entry
print(jsonData["orderData"]["txnType"])
if jsonData["orderData"]["txnType"] == "SALE":
indSale+=44
indTotal+=1
else:
indRefund+=44
else:
totalTransactions = len(jsonData["orderData"])
while y < totalTransactions:
if jsonData["orderData"][y]["txnType"] == "SALE":
indSale+=44
indTotal+=1
else:
indRefund+=44
y+=1
sales.append(indSale)
refunds.append(indRefund)
totalSales.append(indTotal)
x+=1
答
与您的数据,我可以打印出正确的值不会有问题,这意味着该数据是有效的。因此,请仔细检查并验证“jsonData”对象是否为“sub-scriptable”并具有markdown中引用的“orderData”键。看起来你可能没有得到预期的JSON响应。
也指为子编写脚本:In Python, what does it mean if an object is subscriptable or not?
希望它能帮助。
+0
只注意到你引用了[y],但在json中没有jsonData [“orderData”]下的对象列表,所以这不起作用。 – Leo
它看起来像你正在运行这一个循环,你的结构是这样orderDatas的列表。没有更多的上下文,不能说太多。 –
向我们展示产生错误的实际完整代码。只是你显示的一行没有任何错误。 – jwodder
只是添加了完整的代码 – Sagar