2012-03-07 2 views
3

jsonでcurlの出力をきれいに表示する方法を探しています。 私は、この目的のために短いPythonスクリプトを書きましたが、それはまた、私はサブプロセスを使用し、それらからカール実行しないパイプ では動作しません。bashでjsonを解析する方法、またはcurlの出力をPythonスクリプトに渡す方法

だから、パイソン:

#!/usr/bin/python 

import simplejson 
from pprint import pprint 
import sys 
print pprint(simplejson.loads(sys.argv[1])) 

とJSON情報は次のとおりです。

{"response": {"utilization": {"eic": [{"date": "2012.03.06", "usage": []}, {"date": "2012.03.07", "usage": [{"srvCode": "SVC302", "upload": 267547188, "api-calls": {"fileGetInfo": 30, "getUserStorageQuota": 0, "setUserStorageQuota": 0, "fileUploadFlashInit": 31, "getAPISessionUser": 0, "setFileAccessControl": 0, "fileGetPreviewUrl": 0, "fileStartMultipartUpload": 0, "getServiceQuota": 0, "fileGetPreviewUrlsForBunch": 10, "xcodingGetStreamUrl": 0, "getSessionTimeLimit": 0, "fileGetCoversUrlsForBunch": 27, "makePreviews": 0, "setServiceQuota": 0, "getAPISessionTrusted": 3, "getFileAccessControl": 0, "xcodingGetFormats": 0, "getQuotaNotificationEmail": 0, "fileGetDownloadUrl": 0, "xcodingGetStreamInfo": 0, "fileUploadDone": 30, "getLocalServiceUtilization": 9, "getServiceUtilization": 0, "fileDelete": 19, "setSessionTimeLimit": 0, "fileGetMultipartUploadUrl": 0, "fileUploadInit": 0, "extractFileMetadata": 30, "setQuotaNotificationEmail": 0}, "average-storage": 3801210959.4961309, "download": 0, "transcoding": 0}]}]}}} 

答えて

7

検証し、プリティプリントするシェルからjson.toolを使用する:

$ echo '{"json":"obj"}' | python -mjson.tool 
{ 
    "json": "obj" 
} 
+0

ありがとうございます。私はこれらのソリューションの両方を見つけようとしました。両方とも大丈夫です。 – kurd

3

プログラムに渡された第1引数を読み込もうとしていますが間違っています。

パイプを使用する場合、ストリームはプログラムstdinにリダイレクトされます。 sys.stdinから読む必要があります。「How do you read from stdin in python」を参照してください。

関連する問題