问:
如何以易于阅读(供人类读者阅读)的格式显示 JSON?我主要寻找缩进和空白,甚至可能包含颜色/字体样式/等。
答1:
huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。
Pretty-printing is implemented natively in JSON.stringify()。第三个参数启用漂亮的打印并设置要使用的间距:
var str = JSON.stringify(obj, null, 2); // spacing level = 2
如果您需要语法高亮,您可以使用一些正则表达式魔法,如下所示:
function syntaxHighlight(json) {
if (typeof json != 'string') {
json = JSON.stringify(json, undefined, 2);
}
json = json.replace(/&/g, '&').replace(//g, '>');
return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
var cls = 'number';
if (/^"/.test(match)) {
if (/:$/.test(match)) {
cls = 'key';
} else {
cls = 'string';
}
} else if (/true|false/.test(match)) {
cls = 'boolean';
} else if (/null/.test(match)) {
cls = 'null';
}
return '' + match + '';
});
}
在此处查看实际操作:jsfiddle
或下面提供的完整片段:
函数输出(inp){ document.body.appendChild(document.createElement(‘pre’)).innerHTML = inp; } function syntaxHighlight(json) { json = json.replace(/&/g, ‘&’).replace(//g, ‘>’); return json.replace(/(“(\u[a-zA-Z0-9]{4}|\[u]|[\”])"(\s😃?|\ b(true|false|null)\b|-?\d+(?:.\d*)?(?:[eE][+-]?\d+)?)/g, 函数(匹配){ var cls = ‘number’; if (/^"/.test(match)) { if (/😒/.test(match)) { cls = ‘key’; } else { cls = ‘string’; } } else if (/true|false/.test(match)) { cls = ‘boolean’; } else if (/null/.test(match)) { cls = ‘null’; } return ‘’ + 匹配 + ‘’; }); } var obj = {a:1, ‘b’:‘foo’, c:[false,‘false’,null, ‘null’, {d:{e:1.3e5,f:‘1.3e5’}}] }; var str = JSON.stringify(obj, undefined, 4);输出(str);输出(语法高亮(str)); pre {outline: 1px solid #ccc;填充:5px;边距:5px; } .string { 颜色:绿色; } .number { 颜色:深橙色; } .boolean { 颜色:蓝色; } .null { 颜色:洋红色; } .key { 颜色:红色; }
超级棒。我添加了一个函数以在新窗口中弹出它以进行调试: var json = syntaxHighlight(JSON.stringify(obj,undefined,4);); var w = window.open(); var html = " "; html+= " "+json+" "; w.document.writeln(html);
好的。不过,不要忘记它需要 css 和 。
请注意,stringify(...) 适用于 JSON 对象,而不适用于 JSON 字符串。如果你有一个字符串,你需要先JSON.parse(...)
我在这个 sardapv.github.io/json-prettier 上构建了一个工具 :)
你好,这太棒了。它有效,但我在正则表达式中的倒数第二个反斜杠上收到一个 lint 警告 - 不必要的转义字符:\- no-useless-escape。我没有对它进行单元测试,所以害怕 // eslint-disable-next-line
答2:
保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com
如果您有一个想要漂亮打印的对象,用户 Pumbaa80 的回答非常棒。如果您从想要打印的有效 JSON 字符串开始,则需要先将其转换为对象:
var jsonString = '{"some":"json"}';
var jsonPretty = JSON.stringify(JSON.parse(jsonString),null,2);
这会从字符串构建一个 JSON 对象,然后使用 JSON stringify 的漂亮打印将其转换回字符串。
请注意,在显示字符串时,您需要将其包装在 标记中。
它似乎只在使用 textarea 时有效,否则换行符不会进来
答3:
huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感
更好的方法。
Prettify JSON Array in Javascript
JSON.stringify(jsonobj,null,'\t')
答4:
huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。
var jsonObj = {"streetLabel": "Avenue Anatole France", "city": "Paris 07", "postalCode": "75007", "countryCode": "FRA", "countryLabel": "France" };
document.getElementById("result-before").innerHTML = JSON.stringify(jsonObj);
如果以 HTML 显示,您应该添加应答器
document.getElementById("result-after").innerHTML = ""+JSON.stringify(jsonObj,undefined, 2) +""
例子:
var jsonObj = {“streetLabel”: “Avenue Anatole France”, “city”: “Paris 07”, “postalCode”: “75007”, “countryCode”: “FRA”, “countryLabel”: “France” }; document.getElementById(“result-before”).innerHTML = JSON.stringify(jsonObj); document.getElementById(“result-after”).innerHTML = “”+JSON.stringify(jsonObj,undefined, 2) +“” div { float:left;明确:两者;边距:1em 0; }
答5:
huntsbot.com精选全球7大洲远程工作机会,涵盖各领域,帮助想要远程工作的数字游民们能更精准、更高效的找到对方。
根据 Pumbaa80 的回答,我修改了代码以使用 console.log 颜色(肯定在 Chrome 上工作)而不是 HTML。可以在控制台内看到输出。您可以编辑函数内的 _variables 添加更多样式。
function JSONstringify(json) {
if (typeof json != 'string') {
json = JSON.stringify(json, undefined, '\t');
}
var
arr = [],
_string = 'color:green',
_number = 'color:darkorange',
_boolean = 'color:blue',
_null = 'color:magenta',
_key = 'color:red';
json = json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
var style = _number;
if (/^"/.test(match)) {
if (/:$/.test(match)) {
style = _key;
} else {
style = _string;
}
} else if (/true|false/.test(match)) {
style = _boolean;
} else if (/null/.test(match)) {
style = _null;
}
arr.push(style);
arr.push('');
return '%c' + match + '%c';
});
arr.unshift(json);
console.log.apply(console, arr);
}
这是您可以使用的书签:
javascript:function JSONstringify(json) {if (typeof json != 'string') {json = JSON.stringify(json, undefined, '\t');}var arr = [],_string = 'color:green',_number = 'color:darkorange',_boolean = 'color:blue',_null = 'color:magenta',_key = 'color:red';json = json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {var style = _number;if (/^"/.test(match)) {if (/:$/.test(match)) {style = _key;} else {style = _string;}} else if (/true|false/.test(match)) {style = _boolean;} else if (/null/.test(match)) {style = _null;}arr.push(style);arr.push('');return '%c' + match + '%c';});arr.unshift(json);console.log.apply(console, arr);};void(0);
用法:
var obj = {a:1, 'b':'foo', c:[false,null, {d:{e:1.3e5}}]};
JSONstringify(obj);
编辑:在变量声明之后,我只是试图用这一行转义 % 符号:
json = json.replace(/%/g, '%%');
但我发现 Chrome 不支持 % 在控制台中转义。奇怪…也许这将在未来起作用。
干杯!
https://i.stack.imgur.com/GsMl9.jpg
答6:
HuntsBot周刊–不定时分享成功产品案例,学习他们如何成功建立自己的副业–huntsbot.com
我使用 JSONView Chrome extension(它非常漂亮 😃:
编辑:添加 jsonreport.js
我还发布了一个在线独立的 JSON 漂亮打印查看器 jsonreport.js,它提供了一个人类可读的 HTML5 报告,您可以使用它来查看任何 JSON 数据。
您可以在 New JavaScript HTML5 Report Format 中了解有关格式的更多信息。
答7:
huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!
您可以使用 console.dir(),它是 console.log(util.inspect()) 的快捷方式。 (唯一的区别是它绕过了在对象上定义的任何自定义 inspect() 函数。)
它使用语法高亮,智能缩进,从键中删除引号,并使输出尽可能漂亮。
const object = JSON.parse(jsonString)
console.dir(object, {depth: null, colors: true})
对于命令行:
cat package.json | node -e “process.stdin.pipe(new stream.Writable({write: chunk => console.dir(JSON.parse(chunk), {depth: null, colors: true})}))”
huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求
答8:
huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。
这是 user123444555621 的适用于终端的很棒的 HTML。方便调试节点脚本:
function prettyJ(json) {
if (typeof json !== 'string') {
json = JSON.stringify(json, undefined, 2);
}
return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g,
function (match) {
let cls = "\x1b[36m";
if (/^"/.test(match)) {
if (/:$/.test(match)) {
cls = "\x1b[34m";
} else {
cls = "\x1b[32m";
}
} else if (/true|false/.test(match)) {
cls = "\x1b[35m";
} else if (/null/.test(match)) {
cls = "\x1b[31m";
}
return cls + match + "\x1b[0m";
}
);
}
用法:
// thing = any json OR string of json
prettyJ(thing);
答9:
huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!
您可以使用 JSON.stringify(your object, null, 2) 第二个参数可以用作替换函数,它以 key 和 Val 作为参数。如果您想修改 JSON 对象中的某些内容,可以使用它。
更多参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。
这个答案是超过 5400 票的最佳答案的副本。
答10:
huntsbot.com – 高效赚钱,自由工作
如果您使用的是 ES5,只需调用 JSON.stringify :
第二个参数:替换器;设置为空,
第三个参数:空间;使用标签。
JSON.stringify(anObject, null, '\t');
来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
答11:
huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式
出于调试目的,我使用:
console.debug("%o", data);
https://getfirebug.com/wiki/index.php/Console_API
https://developer.mozilla.org/en-US/docs/DOM/console
原文链接:https://www.huntsbot.com/qa/3VED/pretty-print-json-using-javascript?lang=zh_CN&from=csdn
保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com