How to parse json in bash or pass curl output to python script
Question: I'm looking to find some way to have pretty print of curl's output in json. I
wrote short python script for this purpose, but it won't work with pipe Also I
don't want to use subprocesses and run curl from them:

So python:

    
    
    #!/usr/bin/python
    
    import simplejson
    from pprint import pprint
    import sys
    print pprint(simplejson.loads(sys.argv[1]))
    

And json information is:

    
    
    {"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}]}]}}}
    


Answer: Using `json.tool` from the shell to validate and pretty-print:

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

