59

有没有一种现有的方法可以让json.dumps()输出在 ipython 笔记本中显示为“漂亮”格式的 JSON?

4

6 回答 6

90

json.dumps有一个indent论点,打印结果应该足够了:

print(json.dumps(obj, indent=2))
于 2013-09-18T13:08:02.557 回答
63

这可能与 OP 所要求的略有不同,但您可以使用它IPython.display.JSON以交互方式查看 JSON/dict对象。

from IPython.display import JSON
JSON({'a': [1, 2, 3, 4,], 'b': {'inner1': 'helloworld', 'inner2': 'foobar'}})

编辑:这适用于 Hydrogen 和 JupyterLab,但不适用于 Jupyter Notebook 或 IPython 终端。

内部氢气

在此处输入图像描述 在此处输入图像描述

于 2018-07-31T15:09:25.537 回答
37
import uuid
from IPython.display import display_javascript, display_html, display
import json

class RenderJSON(object):
    def __init__(self, json_data):
        if isinstance(json_data, dict):
            self.json_str = json.dumps(json_data)
        else:
            self.json_str = json_data
        self.uuid = str(uuid.uuid4())

    def _ipython_display_(self):
        display_html('<div id="{}" style="height: 600px; width:100%;"></div>'.format(self.uuid), raw=True)
        display_javascript("""
        require(["https://rawgit.com/caldwell/renderjson/master/renderjson.js"], function() {
        document.getElementById('%s').appendChild(renderjson(%s))
        });
        """ % (self.uuid, self.json_str), raw=True)

要以可折叠格式输出数据:

RenderJSON(your_json)

从这里复制粘贴:https ://www.reddit.com/r/IPython/comments/34t4m7/lpt_print_json_in_collapsible_format_in_ipython/

Github:https ://github.com/caldwell/renderjson

于 2016-05-09T19:47:14.857 回答
5

我只是将扩展变量添加到@Kyle Barron 答案:

from IPython.display import JSON
JSON(json_object, expanded=True)
于 2018-09-07T20:26:52.043 回答
3

我发现这个页面正在寻找一种方法来消除\n输出中的文字 s。我们正在使用 Jupyter 进行编码面试,我想要一种方法来显示函数的结果,例如. 我的 Jupyter (4.1.0) 版本不会将它们呈现为实际的换行符。我产生的解决方案是(我有点希望这不是最好的方法,但是......)

import json

output = json.dumps(obj, indent=2)

line_list = output.split("\n")  # Sort of line replacing "\n" with a new line

# Now that our obj is a list of strings leverage print's automatic newline
for line in line_list:
    print line

我希望这可以帮助别人!

于 2016-04-29T14:42:53.133 回答
0

对于 Jupyter 笔记本,可能足以生成在新选项卡中打开的链接(使用 Firefox 的 JSON 查看器):

from IPython.display import Markdown
def jsonviewer(d):
   f=open('file.json','w')
   json.dump(d,f)
   f.close()
   print('open in firefox new tab:')
   return Markdown('[file.json](./file.json)')

jsonviewer('[{"A":1}]')
'open in firefox new tab:

文件.json

于 2021-10-22T23:38:20.173 回答