使用 JavaScript 打印漂亮的 JSON
如何以易于阅读(对于人类读者)的格式显示 JSON?我主要寻找缩进和空白,甚至可能是颜色/字体样式/等。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何以易于阅读(对于人类读者)的格式显示 JSON?我主要寻找缩进和空白,甚至可能是颜色/字体样式/等。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(30)
漂亮打印是在 < 中原生实现的代码>JSON.stringify()。第三个参数启用漂亮的打印并设置要使用的间距:
如果您需要语法突出显示,您可以使用一些正则表达式魔术,如下所示:
请参阅此处的操作:jsfiddle
或者下面提供的完整片段:
Pretty-printing is implemented natively in
JSON.stringify()
. The third argument enables pretty printing and sets the spacing to use:If you need syntax highlighting, you might use some regex magic like so:
See in action here: jsfiddle
Or a full snippet provided below:
如果您有一个想要漂亮打印的对象,用户 Pumbaa80 的回答非常好。如果您从想要漂亮打印的有效 JSON string 开始,则需要首先将其转换为对象:
这会根据字符串构建 JSON 对象,然后将其转换回使用 JSON stringify 的漂亮打印的字符串。
User Pumbaa80's answer is great if you have an object you want pretty printed. If you're starting from a valid JSON string that you want to pretty printed, you need to convert it to an object first:
This builds a JSON object from the string, and then converts it back to a string using JSON stringify's pretty print.
更好的方法。
在 Javascript 中美化 JSON 数组
Better way.
Prettify JSON Array in Javascript
我想你正在寻找这样的东西:
这“漂亮地打印”你的 JSON 字符串,使用制表符进行缩进。
如果您更喜欢使用空格而不是制表符,您也可以使用数字来表示您想要的空格数:
I think you're looking for something like this :
This "pretty-prints" your JSON string, using a tab for indentation.
If you prefer to use spaces instead of tabs, you could also use a number for the number of spaces you'd like :
如果以 HTML 形式显示,则应添加应答器
示例:
In case of displaying in HTML, you should to add a balise
<pre></pre>
Example:
根据 Pumbaa80 的回答,我修改了代码以使用 console.log 颜色(肯定适用于 Chrome)而不是 HTML。可以在控制台内看到输出。您可以编辑函数内的 _variables 添加更多样式。
这是一个您可以使用的书签:
用法:
编辑: 我只是尝试在变量声明之后使用此行转义 % 符号:
但我发现 Chrome 不支持在控制台中转义 % 。奇怪……也许这在未来会起作用。
干杯!
Based on Pumbaa80's answer I have modified the code to use the console.log colours (working on Chrome for sure) and not HTML. Output can be seen inside console. You can edit the _variables inside the function adding some more styling.
Here is a bookmarklet you can use:
Usage:
Edit: I just tried to escape the % symbol with this line, after the variables declaration:
But I find out that Chrome is not supporting % escaping in the console. Strange... Maybe this will work in the future.
Cheers!
您可以使用console.dir(),它是console.log(util.inspect())的快捷方式。
(唯一的区别是它绕过对象上定义的任何自定义
inspect()
函数。)它使用语法突出显示、智能缩进、 从键中删除引号,并使输出尽可能漂亮。
对于命令行:
cat package.json |节点-e“process.stdin.pipe(新流.Writable({write:chunk =&gt; console.dir(JSON.parse(chunk),{深度:null,颜色:true})}))”
You can use
console.dir()
, which is a shortcut forconsole.log(util.inspect())
.(The only difference is that it bypasses any custom
inspect()
function defined on an object.)It uses syntax-highlighting, smart indentation, removes quotes from keys and just makes the output as pretty as it gets.
and for the command line:
cat package.json | node -e "process.stdin.pipe(new stream.Writable({write: chunk => console.dir(JSON.parse(chunk), {depth: null, colors: true})}))"
我使用 JSONView Chrome 扩展(它非常漂亮:):
编辑:添加了
jsonreport.js
我还发布了一个在线独立 JSON 漂亮打印查看器 jsonreport.js,它提供了人类可读的 HTML5 报告,您可以使用它来查看任何 JSON 数据。
您可以在新 JavaScript HTML5 报告格式中阅读有关该格式的更多信息。
I use the JSONView Chrome extension (it is as pretty as it gets :):
Edit: added
jsonreport.js
I've also released an online stand-alone JSON pretty print viewer, jsonreport.js, that provides a human readable HTML5 report you can use to view any JSON data.
You can read more about the format in New JavaScript HTML5 Report Format.
如果您使用的是 ES5,只需使用以下命令调用 JSON.stringify:
来源: https://developer.mozilla.org /en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
If you are using ES5, simply call JSON.stringify with:
Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
这是 user123444555621 的精彩 HTML ,适用于终端。方便调试 Node 脚本:
用法:
Here's user123444555621's awesome HTML one adapted for terminals. Handy for debugging Node scripts:
Usage:
由于对 Ruby 的其他漂亮打印机不满意,我编写了自己的 (NeatJSON),然后 将其移植到 JavaScript 包括 免费的在线格式化程序。该代码在 MIT 许可下是免费的(非常宽松)。
功能(全部可选):
我将在此处复制源代码,以便这不仅仅是库的链接,但我鼓励您转到 GitHub 项目页面,因为该页面将保持最新,而下面的代码则不会。
Unsatisfied with other pretty printers for Ruby, I wrote my own (NeatJSON) and then ported it to JavaScript including a free online formatter. The code is free under MIT license (quite permissive).
Features (all optional):
I'll copy the source code here so that this is not just a link to a library, but I encourage you to go to the GitHub project page, as that will be kept up-to-date and the code below will not.
您可以使用 JSON.stringify(your object, null, 2)
第二个参数可以用作以 key 和 Val 作为参数的替换函数。如果您想要修改 JSON 对象中的某些内容,可以使用它。
更多参考:https://developer.mozilla。 org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
You can use
JSON.stringify(your object, null, 2)
The second parameter can be used as a replacer function which takes key and Val as parameters.This can be used in case you want to modify something within your JSON object.
more reference : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
为了调试目的,我使用:
For debugging purpose I use:
1 行代码(无颜色)快速且人类可读的 JSON 输出:
Quick pretty human-readable JSON output in 1 line code (without colors):
非常感谢@大家!
基于前面的答案,这是另一种提供自定义替换规则作为参数的变体方法:
Thanks a lot @all!
Based on the previous answers, here is another variant method providing custom replacement rules as parameter:
它运作良好:
在此处阅读更多内容:https://developer.mozilla .org/pt-BR/docs/Web/API/Console/table
It works well:
Read more here: https://developer.mozilla.org/pt-BR/docs/Web/API/Console/table
这是一个用 React 编写的简单 JSON 格式/颜色组件:
查看它在 CodePen 中的工作情况:
https://codepen.io/benshope/pen/BxVpjo
希望有帮助!
Here is a simple JSON format/color component written in React:
See it working in this CodePen:
https://codepen.io/benshope/pen/BxVpjo
Hope that helps!
这里有一些东西可以美化这个古老但好问题。
如果您想将格式化对象转储到控制台,但它一直像这样带有隐藏字符的包裹乱七八糟地转储,该怎么办???
但你想要这种可爱吗??:
技巧是将你的 JSON.stringify() 包装在 console.log() 语句中。
如果您讨厌打字,请尝试构建代码片段来完成繁重的工作...
如果您正在处理大型对象,这非常有用。
将代码片段添加到浏览器开发工具中的“代码段”部分,如下所示(更多.. .):
然后只需替换为您的对象(可从当前上下文中获取)并运行代码片段。
Here's something to spruce up this oldie but goodie question.
What if you want to dump a formatted object to console but it keeps dumping like a wrapped mess with hidden chars like this???
But you want this loveliness??:
The trick is To wrap your JSON.stringify() in a console.log() statement.
If you hate typing, try building the snippet to do the heavy lifting...
This is really useful if you're working with big objects.
add a snippet to your 'Snippets' section in browser dev tools like this (more...):
then simply replace with your object (which will be available from the current context) and run the snippet.
找不到任何对控制台有良好语法突出显示的解决方案,所以这是我的 2p
安装和安装添加 cli-highlight 依赖
全局定义 logjson
使用
Couldn't find any solution that had good syntax highlighting for the console, so here's my 2p
Install & Add cli-highlight dependency
Define logjson globally
Use
如果您正在寻找一个不错的库来美化网页上的 json...
Prism.js 非常好。
http://prismjs.com/
我发现使用 JSON.stringify(obj, undefined, 2) 来获取缩进,然后使用棱镜添加主题是一个很好的方法。
如果您通过 ajax 调用加载 JSON,那么您可以运行 Prism 的实用方法之一来美化
例如:
If you're looking for a nice library to prettify json on a web page...
Prism.js is pretty good.
http://prismjs.com/
I found using JSON.stringify(obj, undefined, 2) to get the indentation, and then using prism to add a theme was a good approach.
If you're loading in JSON via an ajax call, then you can run one of Prism's utility methods to prettify
For example:
我想在这里展示我的
jsonAnalyze
方法,它仅打印 JSON 结构,但在某些情况下比打印整个 JSON 更有用。假设您有一个像这样的复杂 JSON:
那么该方法将返回如下结构:
所以这是
jsonAnalyze()
代码:I'd like to show my
jsonAnalyze
method here, it does a pretty print of the JSON structure only, but in some cases can be more usefull that printing the whole JSON.Say you have a complex JSON like this:
Then the method will return the structure like this:
So this is the
jsonAnalyze()
code:Douglas Crockford 的 JavaScript 库中的 JSON 将通过 stringify 方法漂亮地打印 JSON。
您可能还会发现这个旧问题的答案很有用: How can I Pretty-print JSON in (unix) shell 脚本?
Douglas Crockford's JSON in JavaScript library will pretty print JSON via the stringify method.
You may also find the answers to this older question useful: How can I pretty-print JSON in (unix) shell script?
如果您需要它在文本区域中工作,则接受的解决方案将不起作用。
$("#textarea").append(formatJSON(JSON.stringify(jsonobject),true));
If you need this to work in a textarea the accepted solution will not work.
<textarea id='textarea'></textarea>
$("#textarea").append(formatJSON(JSON.stringify(jsonobject),true));
我今天遇到了 @Pumbaa80 代码的问题。我正在尝试将 JSON 语法突出显示应用于在 Mithril 视图中呈现的数据,所以我需要为 JSON.stringify 输出中的所有内容创建 DOM 节点。
我也将很长的正则表达式分成了它的组成部分。
Github 上上下文中的代码此处
I ran into an issue today with @Pumbaa80's code. I'm trying to apply JSON syntax highlighting to data that I'm rendering in a Mithril view, so I need to create DOM nodes for everything in the
JSON.stringify
output.I split the really long regex into its component parts as well.
Code in context on Github here
这很好:
来自
https://github.com/mafintosh/json-markup >mafintosh
HTML
示例样式表可以在此处找到
This is nice:
https://github.com/mafintosh/json-markup from
mafintosh
HTML
Example stylesheet can be found here
要使用
Bootstrap
在HTML
中突出显示并美化它:To highlight and beautify it in
HTML
usingBootstrap
:基于 @user123444555621,只是稍微更现代一些。
您还可以在 js 中指定颜色(不需要 CSS)
和带有较少正则表达式的版本
based on @user123444555621, just slightly more modern.
you can also specify the colors inside js (no CSS needed)
and a version with less regex
适用于 Laravel、Codeigniter
网页:
控制器:从控制器返回 JSON 值,如
return json_encode($data, JSON_PRETTY_PRINT);
在脚本中:
<代码><脚本> $('.jsonPre').html(结果);
结果将为
it's for Laravel, Codeigniter
Html:
<pre class="jsonPre"> </pre>
Controller: Return the JSON value from the controller as like as
return json_encode($data, JSON_PRETTY_PRINT);
In script:
<script> $('.jsonPre').html(result); </script>
result will be
现在使用 Typescript,您可以将自定义函数附加到全局对象。
index.ts
其他文件
prints
With Typescript now, you can attach custom functions to global objects.
index.ts
other files
prints