漂亮的打印 JSON [重复]

Posted

技术标签:

【中文标题】漂亮的打印 JSON [重复]【英文标题】:Pretty Print JSON [duplicate] 【发布时间】:2017-05-01 14:38:33 【问题描述】:

我有一个 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类型。 【参考方案1】:

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

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

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

【讨论】:

以上是关于漂亮的打印 JSON [重复]的主要内容,如果未能解决你的问题,请参考以下文章

XML日志文件打印到漂亮[重复]

不漂亮的json数组PHP [重复]

使用 Flask 漂亮地显示 JSON 数据 [重复]

在漂亮的列中对齐乘法表[重复]

使用 C# 在复杂的 JSON 数组中查找和打印重复项

打印对象的属性,如 json.dumps 打印一个字典 [重复]