是否有一种方法可以让json.dumps()
输出在ipython笔记本中显示为“漂亮”格式的JSON?
答案 0 :(得分:42)
json.dumps
有一个indent
参数,打印结果应该足够了:
print(json.dumps(obj, indent=2))
答案 1 :(得分:24)
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/
答案 2 :(得分:13)
这可能与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终端中无效。
在Hydrogen内部:
答案 3 :(得分:1)
我发现此页面正在寻找一种方法来消除输出中的文字\n
。我们正在使用Jupyter进行编码访问,我想要一种方法来显示函数的结果真正的perty,如。我的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
我希望这有助于某人!
答案 4 :(得分:1)
我只是将扩展变量添加到@Kyle Barron答案:
from IPython.display import JSON
JSON(json_object, expanded=True)
答案 5 :(得分:-1)
如果您希望数据可折叠,请使用以下代码段:
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
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() {
renderjson.set_show_to_level(1)
document.getElementById('%s').appendChild(renderjson(%s))
});
""" % (self.uuid, self.json_str), raw=True)
然后您可以像这样打印json:
RenderJSON({"sag": {"a": 1, "b": 2}})