json在线解析功能代码实现
当在查看一些原始报文数据时,需要美化展示原始报文json,这时需要使用css进行相应排版。
下面的<pre>标签不能换成其他标签(例如div、a等),否则不能换行显示,暂时没有发现问题所在。
这里用到了bootstrap tab插件需要引入css及js相关文件
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
jsp部分
<div class="modal fade popup" id="message" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" data-backdrop="static">
<div class="modal-dialog" style="width:1000px;">
<div class="modal-content">
<div class="panel panel-info">
<div class="panel-heading">
报文明细
<span class="pull-right">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
</span>
</div>
<div class="panel-body" style="overflow-y: auto; max-height:600px;">
<ul id="myTab" class="nav nav-tabs">
<li class="active">
<a href="#first" data-toggle="tab">
信贷报文
</a>
</li>
<li><a href="#second" data-toggle="tab">三方报文</a></li>
</ul>
<div id="myTabContent" class="tab-content">
<div class="tab-pane fade in active high-night-show" id="first">
<pre class="creditInfo">信贷报文</pre>
</div>
<div class="tab-pane fade high-night-show" id="second">
<pre class="loadInfo">三方报文</pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
js部分
function syntaxHighlight(json) {
if (typeof json == 'string') {
json = JSON.parse(json);
}
json = JSON.stringify(json, undefined, 2);
json = json.replace(/&/g, '&').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 '<span class="' + cls + '">' + match + '</span>';
});
};
$(".creditInfo").html(syntaxHighlight(creditInfo));
$(".loadInfo").html(syntaxHighlight(loadInfo));
$("#message").modal();
css部分
pre {
outline: 1px solid #ccc;
padding: 5px;
margin: 5px;
}
.string { color: green; }
.number { color: darkorange; }
.boolean { color: blue; }
.null { color: magenta; }
.key { color: red; }
最终效果
学习Java的同学注意了!!!
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:543120397 我们一起学Java!