漂亮打印JSON

5
我有一个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())

你正在使用 pprint 模块,它基本上将数据序列化回本地 Python 语法。使用普通的 print 将输出该值作为字符串(如果可能)。如果您想将 JSON 数据作为字符串获取,则应该使用 r.body,而 r.json 则是解码后的值,例如,它已经被转换为本地 Python 类型。 - ThorSummoner
1个回答

14

我发现实现这个最简单的方法是使用json模块:

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

是的,这有点冗余,因为您正在进行反序列化,然后再次进行序列化,但它有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接