2016-12-15 150 views
2

我有我想要打印的JSON输出是这个样子的Python脚本:漂亮打印JSON

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

但我的输出看起来像这个:

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

我觉得有一些简单的我错过了。这里是我的代码:

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()) 
+0

您正在使用'pprint',一个基本上将数据序列化回原生Python语法的模块。如果可能的话,使用常规的'print'将会输出一个字符串的值。如果你想把json数据作为一个字符串来使用,我认为你需要'r.body',我认为'r.json'是解码值,例如,它已经被转换为本地python类型。 – ThorSummoner

回答

7

我发现做到这一点最简单的方法是使用json模块:

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

是的,这是一个有点多余的,你是反序列化序列化,然后再次,但它的作品。

+0

完美!这很好。谢谢 – justin