解析 json 输出时出现类型错误 python

type error while parsing json output python

我正在尝试解析 json 的某些字段,这是命令行的输出。但我无法访问任何字段,我总是出现此错误:

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@email.it",
        "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@email.com"',shell=True)
values = json.loads(str(output))
print (values['result'])

为什么我无法访问任何字段?也许我无法解析这种类型的子进程输出?

谢谢大家

问题是subprocess.call returns执行的resultcode;如果出现错误情况,则为 0(如果成功)或任何其他正整数。

现在,当您执行 output['result'] 时,它与执行 0['result'] 相同,这没有意义,因为数字不支持通过技术术语 [] 获取因为那是 __getitem__.

您需要执行subprocess.check_output; returns 输出为字符串。

然后你有另一个小问题,你需要在解析的结果 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@email.com"',shell=True)
values = json.loads(str(output))
print (values['result']) # note values, not output