mbb
mbb

Reputation: 3110

Python not parsing JSON API return prettily

I reviewed a handful of the questions related to mine and found this slightly unique. I'm using Python 2.7.1 on OS X 10.7. One more note: I'm more of a hacker than developer.

I snagged the syntax below from Python documentation to try to do a "Pretty Print:"

date = {}
data = urllib2.urlopen(url)
s = json.dumps(data.read(), sort_keys=True, indent=4)
print '\n'.join([l.rstrip() for l in s.splitlines()])

I expected using the rstrip / splitlines commands would expand out the calls like in the example.

Also, not sure if it's relevant, but when tring to pipe the output to python -mjson.tool the reply is No JSON object could be decoded

Here's a snippet of the cURL output I'm trying to parse:

{"data":[{"name":"Site Member","created_at":"2012-07-24T11:22:04-07:00","activity_id":"500ee7cbbaf02xxx8e011e2e",

And so on.

The main objective is to make this mess of data more legible so I can learn from it and start structuring some automatic scraping of data based on arguments. Any guidance to get me from green to successful is a huge help.

Thanks,
mjb

Upvotes: 0

Views: 194

Answers (1)

CraigTeegarden
CraigTeegarden

Reputation: 8251

The output of the urllib2.urlopen().read() is a string and needs to be converted to an object first before you can call json.dumps() on it.

Modified code:

date = {}
data = urllib2.urlopen(url)
data_obj = json.loads(data.read())
s = json.dumps(data_obj, sort_keys=True, indent=4)
print s

Upvotes: 2

Related Questions