HTML页面格式化JSON对象显示

前提条件

从后台获得json字符或对象,或者自定义json字符串或对象。

原理

JSON.stringify本身就可以将JSON格式化,具体的用法是:JSON.stringify(res, null, 2); //res是要JSON化的对象,2是spacing的格式,用于缩进。

操作步骤

1、定义js函数

  function syntaxHighlight(json) {
      if (typeof json != 'string') {
          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>';
         }
     );
 }

这个函数的参数json,可以是一个json字符串,也可以是一个对象。如果是一个json字符串,在函数中将不经过JSON.stringify的格式化,也就不能产生缩进的效果,除非字符串本身就含有缩进。因此,尽量给这个函数传递一个对象。
此外,这个函数将一个json对象转化为一段html代码,因此还需要等于相应的css样式。

2、定义css样式

 <style>
     pre {outline: 1px solid #ccc; padding: 5px; margin: 5px; }
     .string { color: green; }        /*字符串的样式*/
     .number { color: darkorange; }    /*数字的样式*/
     .boolean { color: blue; }        /*布尔型数据的样式*/
     .null { color: magenta; }        /*null值的样式*/
     .key { color: red; }            /*key值的样式*/
 </style>

3、定义html内容

在html文件中添加一个pre标签,用于显示格式化的json字符串

<pre id="result"></pre>

然后调用js代码,对该pre标签进行初始化即可

$('#result').html(syntaxHighlight(res));//其中res最好是对象,这样在函数中就可进行缩进等格式化处理。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容