How to parse JSON passed on the command line?
yupeng zhang
universeroc at gmail.com
Thu Nov 7 01:09:49 EST 2013
在 2013年11月7日星期四UTC+8上午11时53分09秒,Anthony Papillion写道:
> Hello Everyone,
>
>
>
> I'm writing a little helper script in Python that will access a JSON
>
> formatted argument from the shell when it's called. The parameter will
>
> look like this:
>
>
>
> {"url":"http://www.google.com"}
>
>
>
> So, if my program is called "getargfromcli.py" the call will look like this:
>
>
>
> getargfromcli.py {"url":"http://www.google.com"}
>
>
>
> In the case above, I assume my JSON string will be argv[1]. In fact,
>
> when I do
>
>
>
> print sys.argv[1]
>
>
>
> It works as expected and prints out the JSON string as expected like
>
> this: {url:http://www.google.com}
>
>
>
> Now, for the harder part. When I try to PARSE this JSON using this code:
>
>
>
> json_string = json.loads(sys.argv[1])
>
>
>
> I get an error saying that "No JSON object could be decoded". Even
>
> though this looks like valid JSON and was generated by a JSON generator.
>
>
>
> Can anyone tell me what I'm doing wrong? Basically, I want to eventually
>
> get the value of url into a string.
>
>
>
> Thanks!
>
> anthony
Hi Anthony Papillion.
I'm fresh to Python, but I do love its short simple and graceful.
I've solved your problem. You could try the code below:
getargfromcli.py "\"{'url':'http://www.google.com'}\""
AS command line will strip your ".
>From the Python document, we could get the info as:
json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
the json.loads' argument should be string. Try it:)
More information about the Python-list
mailing list