Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有语法着色的Json漂亮打印_Javascript_Jquery_Html_Json - Fatal编程技术网

Javascript 带有语法着色的Json漂亮打印

Javascript 带有语法着色的Json漂亮打印,javascript,jquery,html,json,Javascript,Jquery,Html,Json,我正在尝试用html漂亮地打印json数据,并进行一些语法着色 但是我的代码中的空值(空列表,空字符串)有点问题 代码如下: if(!库) var库={}; 函数isInt(值){ return!isNaN(值)&&(函数(x){return(x | 0)==x;})(parseFloat(值)) }; library.json={ 替换者:功能(匹配、pIndent、pKey、pVal、pEnd){ var int=''; var键=“”; var-val=''; var-str=''; v

我正在尝试用html漂亮地打印json数据,并进行一些语法着色

但是我的代码中的空值(空列表,空字符串)有点问题

代码如下:

if(!库)
var库={};
函数isInt(值){
return!isNaN(值)&&(函数(x){return(x | 0)==x;})(parseFloat(值))
};
library.json={
替换者:功能(匹配、pIndent、pKey、pVal、pEnd){
var int='';
var键=“”;
var-val='';
var-str='';
var r=小凹痕| |'';
如果(pKey)
r=r+key+pKey.replace(/[“:]/g')+':';
if(pVal)
//r=r+(pVal[0]='''i?str:val)+pVal+';
r=r+(isInt(pVal)?int:str)+pVal+“”;
返回r+(悬空);
},
预打印:功能(obj){
var jsonLine=/^(*)(“[\w]+”:)?(“[^”]*“[\w.+-]*)?([,[{])?$/mg;
返回JSON.stringify(obj,null,3)
.replace(/&/g,“&;”).replace(/\\\“/g,”)
.replace(//g',)
.replace(jsonLine,library.json.replace);
}
};
var lint={
“LintResult”:“失败”,
“CFN_NAG”:[
{
“文件名”:“sam.yaml”,
“文件结果”:{
“失败计数”:0,
“违法行为”:[]
}
}
],
“注释”:“如果上述CFN_NAG键没有值,请检查代码执行日志中的错误/异常”
}
$('#lint').html(library.json.prettyPrint(lint));
//document.getElementById(“json”).innerHTML=json.stringify(数据,未定义,2);
pre{
背景色:鬼影白;
bovrder:1px纯银;
填充:10px 20px;
利润率:20px;
}
.json密钥{
颜色:棕色;
}
.json值{
颜色:海军蓝;
}
.json字符串{
颜色:橄榄色;
}
.json int{
颜色:紫红色;
}

JSON数据:

每个缩进有12个空格的JSON字符串。

这可能会帮助您:

功能输出(inp){
document.body.appendChild(document.createElement('pre')).innerHTML=inp;
}
函数syntaxHighlight(json){
json=json.replace(//&/g,“&;”).replace(//g,”);
返回json.replace(/(“(\\u[a-zA-Z0-9]{4}\\\[^u]\\\\\\”)*”(\s*:)?\b(true | false | null)\b |-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)/g,函数(匹配){
var cls='数字';
如果(/^”/.test(匹配)){
如果(/:$/.test(匹配)){
cls=‘键’;
}否则{
cls='字符串';
}
}else if(/true | false/.test(匹配)){
cls='布尔';
}else if(/null/.test(匹配)){
cls='null';
}
返回“”+匹配+“”;
});
}
var obj={
“LintResult”:“失败”,
“CFN_NAG”:[
{
“文件名”:“sam.yaml”,
“文件结果”:{
“失败计数”:0,
“违法行为”:[]
}
}
],
“注释”:“如果上述CFN_NAG键没有值,请检查代码执行日志中的错误/异常”
};
var str=JSON.stringify(obj,未定义,4);
输出(syntaxHighlight(str));
pre{outline:1px solid#ccc;padding:5px;margin:5px;background:ghostwite}
.string{color:olive;}
.number{颜色:紫红色;}
.boolean{color:navy;}
.null{颜色:洋红色;}

.key{color:brown;}
也可以。但是,尝试对布尔值执行不区分大小写的操作不起作用。此:else if(/true | false/.test(match.toLowerCase())会导致错误(空白页),此:else if(/true | false/i.test(match))。如何在不区分大小写的情况下检查布尔值?您好@mrid,为什么您的代码与其他非字符串值不匹配,而与true和false不匹配?