2016-07-07 12 views
0

jsonのいくつかのフィールドを解析しようとしています。これはコマンドラインの出力です。しかし、私は、任意のフィールドにアクセスすることができない、私はいつもこのエラーをしました: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 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']) 

私はどのフィールドにもアクセスできないのですか?多分私はこのタイプのサブプロセス出力を解析できませんか?

おかげでみんな

+0

あなたが ''プリント(値[ '結果を'])を意味しないのですか?そしてsubprocess.callはintを返します。これはjson文字列を取得する方法ではありません。 – polku

+0

お手数ですが申し訳ありませんが、私は同じエラーがあります。 よくos.systemでも同じエラーを試みます...文字列にキャストしようとしています – tafazzi87

+0

出力を確認しますか?それが適切な応答を持っていることを確認してください。 –

答えて

2

は問題がsubprocess.callは、実行のResultCodeのを返すということです。これはエラーが発生した場合は0(成功した場合)またはその他の正の整数のいずれかです。あなたがoutput['result']を実行するとき

は今、それは数字が[]によってフェッチサポートしていないと意味を成さない0['result']をやってと同じであり、そのための技術的な用語は__getitem__です。

subprocess.check_outputを実行する必要があります。出力は文字列として返されます。

次に、outputではなく、結果の解析されたjsonで辞書をフェッチする必要があるという小さな問題があります。要するに

、次のものが必要です。

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

関連する問題