在解析json输出时输入错误python
问题描述:
我试图解析json的一些字段,这是命令行的输出。但我不能进入任何领域,我总是这个错误:在解析json输出时输入错误python
TypeError: 'int' object has no attribute '__getitem__'
我的JSON输出是这样的:
{"result":"success","totalresults":"1","startnumber":0,"numreturned":1,"tickets":{
"ticket":[
{
"id":"2440",
"tid":"473970",
"deptid":"1",
"userid":"0",
"name":"John",
"email":"[email protected]",
"cc":"","c":"P1gqiLym",
"date":"2016-07-01 13:00:02",
"subject":"test",
"status":"stato",
"priority":"Medium",
"admin":"",
"attachment":"image001.jpg",
"lastreply":"",
"flag":"0",
"service":""
}
]
}
}
和我的代码是这样的:
import json
import sys
import subprocess
output=subprocess.call('pywhmcs --url http://whmcs.test.it --username myuser --password mypass --action gettickets --params status="tickets" email="[email protected]"',shell=True)
values = json.loads(str(output))
print (values['result'])
为什么我无法访问任何字段?也许我不能解析这种类型的子过程输出?
谢谢你们
答
的问题是,subprocess.call
返回resultCode为执行的;如果有错误条件,它可以是0(如果成功)或任何其他正整数。
现在,当你执行output['result']
,它是一样的做0['result']
不使作为数字不支持[]
获取意义上讲,该技术术语是__getitem__
。
您需要执行subprocess.check_output
;它以字符串的形式返回输出。
然后你有另一个小问题,你需要获取解析的结果json字典,而不是output
。
总之,你需要:
import json
# import sys -- not required
import subprocess
output=subprocess.check_output('pywhmcs --url http://whmcs.test.it --username myuser --password mypass --action gettickets --params status="tickets" email="[email protected]"',shell=True)
values = json.loads(str(output))
print (values['result']) # note values, not output
+0
非常感谢,现在它工作正常! – tafazzi87
不要你的意思'打印(值[ '结果'])'? subprocess.call返回一个int,这不是获取你的json字符串的方式。 – polku
ops对不起,你是对的,但我有同样的错误。 以及我也尝试os.system,但同样的错误...我试图投到字符串 – tafazzi87
检查输出?并确保它有适当的响应。 –