在html页面中展示JSON,JSON.stringify用法

问题描述:

有时候我们需要将json数据直接显示在页面上(比如需要将接口返回的结果直接展示),如果直接显示字符串,不美观也不方便查看。比如:
丑丑的
这时就需要把json格式化一下展示了,格式化成下图的样式就完美啦。
示例

解决方案:
  1. 首先使用JSON.stringify将JSON格式化:

    // 返回一个表示给定值的JSON字符串。
    JSON.stringify(value[, replacer [, space]]);
    

    JSON.stringify() 方法将一个 JavaScript 值(对象或者数组)转换为一个 JSON 字符串,如果指定了 replacer 是一个函数,则可以选择性地替换值,或者如果指定了 replacer 是一个数组,则可选择性地仅包含数组指定的属性。

    参数

    • value
      将要序列化成 一个 JSON 字符串的值。
    • replacer(可选)
      如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的
      JSON 字符串中;如果该参数为 null 或者未提供,则对象所有的属性都会被序列化;关于该参数更详细的解释和示例,请参考使用原生的
      JSON 对象一文。
    • space (可选)
      指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;如果该参数为字符串(当字符串长度超过10个字母,取其前10个字母),该字符串将被作为空格;如果该参数没有提供(或者为
      null),将没有空格。
  2. 给返回的字符串加上格式化的代码和样式:
    js:

syntaxHighlight(json) {
	    if (typeof json !== 'string') {
	      json = JSON.stringify(json, undefined, 2)
	    } else {
	      json = JSON.stringify(JSON.parse(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) {
	        let cls = 'json-number'
	        if (/^"/.test(match)) {
	          if (/:$/.test(match)) {
	            cls = 'json-key'
	          } else {
	            cls = 'json-string'
	          }
	        } else if (/true|false/.test(match)) {
	          cls = 'json-boolean'
	        } else if (/null/.test(match)) {
	          cls = 'null'
	        }
	        return '<span class="' + cls + '">' + match + '</span>'
	      })
	  }

less:

#format-json {
  pre {
    outline: 1px solid #ccc;
    padding: 5px;
    .json-string {
      color: #c62628;
    }
    .json-number, .json-boolean {
      color: #1f1bcc;
    }
    .json-null {
      color: #818181;
    }
    .json-key {
      color: #861d8f;
    }
  }
}

html:

<div id="format-json">
  <pre [innerHtml]="syntaxHighlight(jsonObj) | safeHtml"></pre>
</div>

其中safeHtml是能够保留显示html的行内style的pipe,看这里SafeHtmlPipe

最终效果:
json效果

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JSON.stringifyJSON对象的一个方法,用于将JavaScript对象转换为JSON字符串。它有三个参数:第一个参数是要转换的对象,第二个参数是一个可选的转换函数,用于控制转换过程,第三个参数是一个可选的空格参数,用于美化输出的字符串。例如,JSON.stringify({ x: 1, y: 2 })将返回字符串"{"x":1,"y":2}"。 JSON.parse是JSON对象的另一个方法,用于将JSON字符串转换为JavaScript对象。它只有一个参数,即要解析的JSON字符串。例如,JSON.parse('{"x":1,"y":2}')将返回一个包含键对{x: 1, y: 2}的JavaScript对象。 关于JSON.stringify的第二个参数,可以传入一个函数来控制转换过程。函数接受两个参数:键和。如果要从转换排除某些属性,可以在函数返回undefined。下面是一个例子: ```javascript function replacer(key, value) { if (typeof value === "string") { return undefined; } return value; } var obj = { a: "foo", b: 42, c: ["apple", "banana"] }; var jsonString = JSON.stringify(obj, replacer); console.log(jsonString); // "{"b":42,"c":["apple","banana"]}" ``` 关于JSON.stringify的第三个参数,可以传入一个空格字符串或多个空格字符,用于美化输出的字符串。例如,JSON.stringify({ a: 2 }, null, " ")将返回"{\n "a": 2\n}",而JSON.stringify({ a: 2 }, null, "")将返回"{"a":2}"。 请问还有其他问题吗? 相关问题: 1. JSON.parse的用法是什么? 2. JSON对象还有哪些方法? 3. 什么是JSON?它有什么用途?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值