Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pretty Print JSON [duplicate]

Tags:

python

json

I have a python script that I want to print the JSON output to look something like this:

{
    "authMode": "open",
    "enabled": false,
    "ipAssignmentMode": "NAT mode",
    "name": "Unconfigured SSID 14",
    "number": 13,
    "perClientBandwidthLimitDown": 0,
    "perClientBandwidthLimitUp": 0,
    "splashPage": "None",
    "ssidAdminAccessible": false
},
{
    "authMode": "open",
    "enabled": false,
    "ipAssignmentMode": "NAT mode",
    "name": "Unconfigured SSID 15",
    "number": 14,
    "perClientBandwidthLimitDown": 0,
    "perClientBandwidthLimitUp": 0,
    "splashPage": "None",
    "ssidAdminAccessible": false
}

But my output looks like this instead:

{u'authMode': u'open',
u'enabled': False,
u'ipAssignmentMode': u'NAT mode',
u'name': u'Unconfigured SSID 14',
u'number': 13,
u'perClientBandwidthLimitDown': 0,
u'perClientBandwidthLimitUp': 0,
u'splashPage': u'None',
u'ssidAdminAccessible': False},
{u'authMode': u'open',
u'enabled': False,
u'ipAssignmentMode': u'NAT mode',
u'name': u'Unconfigured SSID 15',
u'number': 14,
u'perClientBandwidthLimitDown': 0,
u'perClientBandwidthLimitUp': 0,
u'splashPage': u'None',
u'ssidAdminAccessible': False}]

I feel like there is something simple I am missing. Here is my code:

url = "https://dashboard.meraki.com/api/v0/networks/%s/ssids" % NETWORKID
headers = {'X-Cisco-Meraki-API-Key': APIKEY}
r = requests.get(url, headers=headers, allow_redirects=True)
pprint (r.json())
like image 319
justin Avatar asked Dec 15 '16 21:12

justin


1 Answers

I've found the easiest way to accomplish this is to use the json module:

r = requests.get(url, headers=headers, allow_redirects=True)
import json
print(json.dumps(r.json(), indent=2))

Yes, this is a bit redundant in that you are deserializing then serializing again, but it works.

like image 108
juanpa.arrivillaga Avatar answered Sep 29 '22 10:09

juanpa.arrivillaga