[原生js] 简单一招实现json数据可视化

转自:http://udn.yyuap.com/thread-57397-1-1.html

开发一个内部功能时碰到的需求,要把json数据在页面上展示出来,平时浏览器会安装jsonView这样的扩展来看json数据,但是程序要用到的话该怎么办呢?今天在网上搜索的时候,发现了这个小技巧,分享一下。

  要用到的核心是JSON.stringify这个函数,没想到吧,平时我们只把它用来序列号json数据。但是这个stringify是有三个参数的,
  1. JSON.stringify(value [, replacer] [, space])
复制代码

  ,具体描述请看这里:https://msdn.microsoft.com/library/cc836459(v=vs.94).aspx

  我们要用到的就是这第三个参数,它可以指定在生成的字符串中加多少空格,从而生成有一定格式的字符串。生成的字符串我们可以放在

标签中,这样就能很好的显示缩进。然后呢,为了让生成的数据有高亮效果,我们还可以写一个简单的高亮函数。基本就是这么个原理啦,请看代码实现:
  1. function output(inp) {
  2.     document.body.appendChild(document.createElement('pre')).innerHTML = inp;
  3. }

  4. function syntaxHighlight(json) {
  5.     json = json.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
  6.     return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
  7.         var cls = 'number';
  8.         if (/^"/.test(match)) {
  9.             if (/:$/.test(match)) {
  10.                 cls = 'key';
  11.             } else {
  12.                 cls = 'string';
  13.             }
  14.         } else if (/true|false/.test(match)) {
  15.             cls = 'boolean';
  16.         } else if (/null/.test(match)) {
  17.             cls = 'null';
  18.         }
  19.         return '<span class="' + cls + '">' + match + '</span>';
  20.     });
  21. }

  22. var obj = {
  23.     num: 1234,
  24.     str: '字符串',
  25.     arr: [1,2,3,4,5,6],
  26.     obj: {
  27.         name: 'tom',
  28.         age: 10,
  29.         like: ['a', 'b']
  30.     }
  31. };
  32. var str = JSON.stringify(obj, undefined, 4);

  33. output(syntaxHighlight(str));
复制代码

  最终生成的效果就是这样的:

  是不是简单而又实用呢~

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用原生的 JavaScript 来将数据写入 JSON 文件中。以下是一种常见的方法: 1. 首先,您需要将数据转换为 JSON 字符串。您可以使用 `JSON.stringify()` 方法来实现这一点。 ```javascript var data = { name: "John", age: 30, city: "New York" }; var jsonData = JSON.stringify(data); ``` 2. 然后,您可以使用浏览器提供的 `Blob` 对象和 `URL.createObjectURL()` 方法来创建一个可以保存的 URL。 ```javascript var blob = new Blob([jsonData], { type: "application/json" }); var url = URL.createObjectURL(blob); ``` 3. 接下来,您可以创建一个 `<a>` 标签,并设置其 `href` 属性为刚刚创建的 URL。然后,您可以使用 `setAttribute()` 方法将其下载属性设置为要保存的文件名。 ```javascript var link = document.createElement("a"); link.href = url; link.setAttribute("download", "data.json"); ``` 4. 最后,您可以使用 `click()` 方法模拟用户点击下载链接,将数据保存为 JSON 文件。 ```javascript link.click(); ``` 完整的示例代码如下所示: ```javascript var data = { name: "John", age: 30, city: "New York" }; var jsonData = JSON.stringify(data); var blob = new Blob([jsonData], { type: "application/json" }); var url = URL.createObjectURL(blob); var link = document.createElement("a"); link.href = url; link.setAttribute("download", "data.json"); link.click(); ``` 通过运行上述代码,您将生成一个名为 "data.json" 的 JSON 文件,其中包含您的数据。当用户点击下载链接时,浏览器将提示他们保存文件。 请注意,这种方法只适用于浏览器环境,无法直接在服务器端写入 JSON 文件。如果您需要在服务器端写入 JSON 文件,请考虑使用适用于您的服务器端技术栈的文件操作方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值