Reputation: 597
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}]}]}}}
Upvotes: 3
Views: 4053
Reputation: 161984
Using json.tool
from the shell to validate and pretty-print:
$ echo '{"json":"obj"}' | python -mjson.tool
{
"json": "obj"
}
Upvotes: 7
Reputation: 1856
You're trying to read the 1st argument passed to the program, which is wrong.
When using pipes the stream is redirected to the programs stdin. You should read from sys.stdin, see "How do you read from stdin in python".
Upvotes: 3