如何實(shí)現(xiàn)json數(shù)據(jù)可視化詳解
前言
本文介紹的是如何實(shí)現(xiàn)json數(shù)據(jù)可視化,要用到的核心是JSON.stringify
這個(gè)函數(shù),沒(méi)想到吧,平時(shí)我們只把它用來(lái)序列號(hào)json數(shù)據(jù)。
JSON.stringify 函數(shù)
將 JavaScript 值轉(zhuǎn)換為 JavaScript 對(duì)象表示法 (Json) 字符串。
語(yǔ)法
JSON.stringify(value [, replacer] [, space])
參數(shù)
value
必需。 要轉(zhuǎn)換的 JavaScript 值(通常為對(duì)象或數(shù)組)。
replacer
可選。 用于轉(zhuǎn)換結(jié)果的函數(shù)或數(shù)組。
如果 replacer 為函數(shù),則 JSON.stringify
將調(diào)用該函數(shù),并傳入每個(gè)成員的鍵和值。 使用返回值而不是原始值。 如果此函數(shù)返回 undefined,則排除成員。 根對(duì)象的鍵是一個(gè)空字符串:""。
如果 replacer 是一個(gè)數(shù)組,則僅轉(zhuǎn)換該數(shù)組中具有鍵值的成員。 成員的轉(zhuǎn)換順序與鍵在數(shù)組中的順序一樣。 當(dāng) value 參數(shù)也為數(shù)組時(shí),將忽略 replacer 數(shù)組。
space
可選。 向返回值 JSON 文本添加縮進(jìn)、空格和換行符以使其更易于讀取。
如果省略 space,則將生成返回值文本,而沒(méi)有任何額外空格。
如果 space 是一個(gè)數(shù)字,則返回值文本在每個(gè)級(jí)別縮進(jìn)指定數(shù)目的空格。 如果 space 大于 10,則文本縮進(jìn) 10 個(gè)空格。
如果 space 是一個(gè)非空字符串(例如“\t”),則返回值文本在每個(gè)級(jí)別中縮進(jìn)字符串中的字符。
如果 space 是長(zhǎng)度大于 10 個(gè)字符的字符串,則使用前 10 個(gè)字符。
返回值
一個(gè)包含 JSON 文本的字符串。
json數(shù)據(jù)可視化
我們要用到的就是這第三個(gè)參數(shù),它可以指定在生成的字符串中加多少空格,從而生成有一定格式的字符串。生成的字符串我們可以放在<pre>標(biāo)簽中,這樣就能很好的顯示縮進(jìn)。然后呢,為了讓生成的數(shù)據(jù)有高亮效果,我們還可以寫(xiě)一個(gè)簡(jiǎn)單的高亮函數(shù)。
基本就是這么個(gè)原理啦,請(qǐng)看代碼實(shí)現(xiàn):
function output(inp) { document.body.appendChild(document.createElement('pre')).innerHTML = inp; } function syntaxHighlight(json) { 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>'; }); } var obj = { num: 1234, str: '字符串', arr: [1,2,3,4,5,6], obj: { name: 'tom', age: 10, like: ['a', 'b'] } }; var str = JSON.stringify(obj, undefined, 4); output(syntaxHighlight(str));
最終生成的效果就是這樣的:
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
- JavaScript可視化圖表庫(kù)D3.js API中文參考
- Highcharts+NodeJS搭建數(shù)據(jù)可視化平臺(tái)示例
- JS 音頻可視化插件Wavesurfer.js的使用教程
- JS實(shí)現(xiàn)可視化音頻效果的實(shí)例代碼
- JavaScript數(shù)據(jù)可視化:ECharts制作地圖
- 交互式可視化js庫(kù)gojs使用介紹及技巧
- vue使用wavesurfer.js解決音頻可視化播放問(wèn)題
- 配合Swagger使用絕佳的兩款直觀易用JSON可視化工具
- JS前端可視化GraphQL使用詳解
- 相關(guān)JavaScript在覽器中實(shí)現(xiàn)可視化的四種方式
相關(guān)文章
一篇了解JSON與數(shù)據(jù)存儲(chǔ)基礎(chǔ)知識(shí)
這篇文章主要介紹了JSON與數(shù)據(jù)存儲(chǔ)基礎(chǔ)知識(shí),本篇文章較為基礎(chǔ),但非常詳細(xì),可以很好的理解JSON和數(shù)據(jù)存儲(chǔ),,需要的朋友可以參考下2023-01-01web頁(yè)面數(shù)據(jù)展示新想法(json)
若使用json作為客戶端和服務(wù)器之間的數(shù)據(jù)交換格式,代替原來(lái)的html交換格式。2010-06-06用JSON做數(shù)據(jù)傳輸格式中的一些問(wèn)題總結(jié)
Json 憑借其自身的優(yōu)勢(shì),在Web數(shù)據(jù)處理方面已經(jīng)占據(jù)了一定的位置,這段時(shí)間涉及到用Json做為數(shù)據(jù)傳輸格式的項(xiàng)目有3個(gè),其中有部分頁(yè)面就采用了Json 數(shù)據(jù)傳輸格式, 這里我總結(jié)下這段時(shí)間采用這種方式的一些問(wèn)題總結(jié)2011-12-12使用JSON作為函數(shù)的參數(shù)的優(yōu)缺點(diǎn)
這篇文章主要介紹了使用JSON作為函數(shù)的參數(shù)的優(yōu)缺點(diǎn),需要的朋友可以參考下2016-10-10Chrome中JSON.parse的特殊實(shí)現(xiàn)
ECMA 262 Edition5 中提供了原生的JSON支持,其中JSON.parse用來(lái)將字符串轉(zhuǎn)成成json,見(jiàn)ECMA 262 Edition5 15.12.2。另見(jiàn):字符串轉(zhuǎn)換成json的三種方式2011-01-01