漂亮打印JSON
问题描述:
我有我想要打印的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())
答
我发现做到这一点最简单的方法是使用json
模块:
r = requests.get(url, headers=headers, allow_redirects=True)
import json
print(json.dumps(r.json(), indent=2))
是的,这是一个有点多余的,你是反序列化序列化,然后再次,但它的作品。
+0
完美!这很好。谢谢 – justin
您正在使用'pprint',一个基本上将数据序列化回原生Python语法的模块。如果可能的话,使用常规的'print'将会输出一个字符串的值。如果你想把json数据作为一个字符串来使用,我认为你需要'r.body',我认为'r.json'是解码值,例如,它已经被转换为本地python类型。 – ThorSummoner