本文作者:DurkBlue

html中json在线格式化代码

DurkBlue 2019-12-19 2008
html中json在线格式化代码摘要:   在线验证json格式,格式化json代码,对json代码排版处理,支付json数据层级,展开和叠起,json缩进控制。代码来源网络整理。在线预览地址:https://...

  在线验证json格式,格式化json代码,对json代码排版处理,支付json数据层级,展开和叠起,json缩进控制。代码来源网络整理。

html中json在线格式化代码  第1张

在线预览地址:https://zixuephp.net/tool-json.html

代码:

js<!DOCTYPE html><html><head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    <title>在线代码格式化</title>    <script type="text/javascript">		window.SINGLE_TAB = "  ";window.ImgCollapsed = "https://zixuephp.net/static/images/Collapsed.gif";window.ImgExpanded = "https://zixuephp.net/static/images/Expanded.gif";window.QuoteKeys = true; function $id(id) {    return document.getElementById(id);} function IsArray(obj) {    return obj &&        typeof obj === 'object' &&        typeof obj.length === 'number' &&        !(obj.propertyIsEnumerable('length'));} function Process() {    SetTab();    window.IsCollapsible = $id("CollapsibleView").checked;    var json = $id("RawJson").value;    var html = "";    try {        if (json == "") {            json = "\"\"";            return;        }        var obj = eval("[" + json + "]");        html = ProcessObject(obj[0], 0, false, false, false);        $id("Canvas").innerHTML = "<PRE class='CodeContainer'>" + html + "</PRE>";    } catch (e) {        alert("JSON数据格式不正确:\n" + e.message);        $id("Canvas").innerHTML = "";    }} window._dateObj = new Date();window._regexpObj = new RegExp(); function ProcessObject(obj, indent, addComma, isArray, isPropertyContent) {    var html = "";    var comma = (addComma) ? "<span class='Comma'>,</span> " : "";    var type = typeof obj;    var clpsHtml = "";    if (IsArray(obj)) {        if (obj.length == 0) {            html += GetRow(indent, "<span class='ArrayBrace'>[ ]</span>" + comma, isPropertyContent);        } else {            clpsHtml = window.IsCollapsible ? "<span><img src=\"" + window.ImgExpanded + "\" onClick=\"ExpImgClicked(this)\" /></span><span class='collapsible'>" : "";            html += GetRow(indent, "<span class='ArrayBrace'>[</span>" + clpsHtml, isPropertyContent);            for (var i = 0; i < obj.length; i++) {                html += ProcessObject(obj[i], indent + 1, i < (obj.length - 1), true, false);            }            clpsHtml = window.IsCollapsible ? "</span>" : "";            html += GetRow(indent, clpsHtml + "<span class='ArrayBrace'>]</span>" + comma);        }    } else if (type == 'object') {        if (obj == null) {            html += FormatLiteral("null", "", comma, indent, isArray, "Null");        } else if (obj.constructor == window._dateObj.constructor) {            html += FormatLiteral("new Date(" + obj.getTime() + ") /*" + obj.toLocaleString() + "*/", "", comma, indent, isArray, "Date");        } else if (obj.constructor == window._regexpObj.constructor) {            html += FormatLiteral("new RegExp(" + obj + ")", "", comma, indent, isArray, "RegExp");        } else {            var numProps = 0;            for (var prop in obj) numProps++;            if (numProps == 0) {                html += GetRow(indent, "<span class='ObjectBrace'>{ }</span>" + comma, isPropertyContent);            } else {                clpsHtml = window.IsCollapsible ? "<span><img src=\"" + window.ImgExpanded + "\" onClick=\"ExpImgClicked(this)\" /></span><span class='collapsible'>" : "";                html += GetRow(indent, "<span class='ObjectBrace'>{</span>" + clpsHtml, isPropertyContent);                 var j = 0;                 for (var prop in obj) {                     var quote = window.QuoteKeys ? "\"" : "";                     html += GetRow(indent + 1, "<span class='PropertyName'>" + quote + prop + quote + "</span>: " + ProcessObject(obj[prop], indent + 1, ++j < numProps, false, true));                 }                 clpsHtml = window.IsCollapsible ? "</span>" : "";                 html += GetRow(indent, clpsHtml + "<span class='ObjectBrace'>}</span>" + comma);             }         }     } else if (type == 'number') {         html += FormatLiteral(obj, "", comma, indent, isArray, "Number");     } else if (type == 'boolean') {         html += FormatLiteral(obj, "", comma, indent, isArray, "Boolean");     } else if (type == 'function') {         if (obj.constructor == window._regexpObj.constructor) {             html += FormatLiteral("new RegExp(" + obj + ")", "", comma, indent, isArray, "RegExp");         } else {             obj = FormatFunction(indent, obj);             html += FormatLiteral(obj, "", comma, indent, isArray, "Function");         }     } else if (type == 'undefined') {         html += FormatLiteral("undefined", "", comma, indent, isArray, "Null");     } else {         html += FormatLiteral(obj.toString().split("\\").join("\\\\").split('"').join('\\"'), "\"", comma, indent, isArray, "String");     }     return html; } function FormatLiteral(literal, quote, comma, indent, isArray, style) {     if (typeof literal == 'string')         literal = literal.split("<").join("&lt;").split(">").join("&gt;");     var str = "<span class='" + style + "'>" + quote + literal + quote + comma + "</span>";     if (isArray) str = GetRow(indent, str);     return str; } function FormatFunction(indent, obj) {     var tabs = "";     for (var i = 0; i < indent; i++) tabs += window.TAB;     var funcStrArray = obj.toString().split("\n");     var str = "";     for (var i = 0; i < funcStrArray.length; i++) {         str += ((i == 0) ? "" : tabs) + funcStrArray[i] + "\n";     }     return str; } function GetRow(indent, data, isPropertyContent) {     var tabs = "";     for (var i = 0; i < indent && !isPropertyContent; i++) tabs += window.TAB;     if (data != null && data.length > 0 && data.charAt(data.length - 1) != "\n")         data = data + "\n";     return tabs + data; } function CollapsibleViewClicked() {     $id("CollapsibleViewDetail").style.visibility = $id("CollapsibleView").checked ? "visible" : "hidden";     Process(); }  function QuoteKeysClicked() {     window.QuoteKeys = $id("QuoteKeys").checked;     Process(); }  function CollapseAllClicked() {     EnsureIsPopulated();     TraverseChildren($id("Canvas"), function (element) {         if (element.className == 'collapsible') {             MakeContentVisible(element, false);         }     }, 0); } function ExpandAllClicked() {     EnsureIsPopulated();     TraverseChildren($id("Canvas"), function (element) {         if (element.className == 'collapsible') {             MakeContentVisible(element, true);         }     }, 0); } function MakeContentVisible(element, visible) {     var img = element.previousSibling.firstChild;     if (!!img.tagName && img.tagName.toLowerCase() == "img") {         element.style.display = visible ? 'inline' : 'none';         element.previousSibling.firstChild.src = visible ? window.ImgExpanded : window.ImgCollapsed;     } } function TraverseChildren(element, func, depth) {     for (var i = 0; i < element.childNodes.length; i++) {         TraverseChildren(element.childNodes[i], func, depth + 1);     }     func(element, depth); } function ExpImgClicked(img) {     var container = img.parentNode.nextSibling;     if (!container) return;     var disp = "none";     var src = window.ImgCollapsed;     if (container.style.display == "none") {         disp = "inline";         src = window.ImgExpanded;     }     container.style.display = disp;     img.src = src; } function CollapseLevel(level) {     EnsureIsPopulated();     TraverseChildren($id("Canvas"), function (element, depth) {         if (element.className == 'collapsible') {             if (depth >= level) {                 MakeContentVisible(element, false);             } else {                 MakeContentVisible(element, true);             }         }     }, 0); } function TabSizeChanged() {     Process(); } function SetTab() {     var select = $id("TabSize");     window.TAB = MultiplyString(parseInt(select.options[select.selectedIndex].value), window.SINGLE_TAB); } function EnsureIsPopulated() {     if (!$id("Canvas").innerHTML && !!$id("RawJson").value) Process(); } function MultiplyString(num, str) {     var sb = [];     for (var i = 0; i < num; i++) {         sb.push(str);     }     return sb.join(""); } function SelectAllClicked() {      if (!!document.selection && !!document.selection.empty) {         document.selection.empty();     } else if (window.getSelection) {         var sel = window.getSelection();         if (sel.removeAllRanges) {             window.getSelection().removeAllRanges();         }     }      var range =         (!!document.body && !!document.body.createTextRange)             ? document.body.createTextRange()             : document.createRange();      if (!!range.selectNode)         range.selectNode($id("Canvas"));     else if (range.moveToElementText)         range.moveToElementText($id("Canvas"));      if (!!range.select)         range.select($id("Canvas"));     else         window.getSelection().addRange(range); } function LinkToJson() {     var val = $id("RawJson").value;     val = escape(val.split('/n').join(' ').split('/r').join(' '));     $id("InvisibleLinkUrl").value = val;     $id("InvisibleLink").submit(); }	</script></head><body> <div class="topBar">    <div class="title">待格式化JSON:</div>    <textarea id="RawJson" style="width:100%;" >{"name":"php自学网","site":"https://zixuephp.net"}</textarea></div> <div class="operateTB form-inline">    <label for="TabSize">缩进量:</label>    <select id="TabSize" onchange="TabSizeChanged()" class="span1">        <option value="1">1</option>        <option value="2" selected="true">2</option>        <option value="3">3</option>        <option value="4">4</option>        <option value="5">5</option>        <option value="6">6</option>    </select>    <label for="QuoteKeys">        <input type="checkbox" id="QuoteKeys" onclick="QuoteKeysClicked()" checked="true">引号    </label>    <span id="CollapsibleViewHolder">          <label for="CollapsibleView">            <input type="checkbox" id="CollapsibleView" onclick="CollapsibleViewClicked()" checked="true">显示控制          </label>    </span>    <span id="CollapsibleViewDetail" style="visibility: visible;margin-right:10px; ">        <a href="javascript:void(0);" onclick="ExpandAllClicked()">展开</a>        <a href="javascript:void(0);" onclick="CollapseAllClicked()">叠起</a>        <a href="javascript:void(0);" onclick="CollapseLevel(3)">2级</a>        <a href="javascript:void(0);" onclick="CollapseLevel(4)">3级</a>        <a href="javascript:void(0);" onclick="CollapseLevel(5)">4级</a>        <a href="javascript:void(0);" onclick="CollapseLevel(6)">5级</a>        <a href="javascript:void(0);" onclick="CollapseLevel(7)">6级</a>        <a href="javascript:void(0);" onclick="CollapseLevel(8)">7级</a>        <a href="javascript:void(0);" onclick="CollapseLevel(9)">8级</a>    </span>    <input type="button" onclick="Process()" value="格式化"></div><div class="bottomBar">    <div class="title">格式化JSON:</div>    <div id="Canvas"></div></div> </body></html>


此篇文章由DurkBlue发布,请自觉转载请注明来处
文章投稿或转载声明

来源:DurkBlue版权归原作者所有,转载请保留出处。本站文章发布于 2019-12-19
温馨提示:文章内容系作者个人观点,不代表DurkBlue博客对其观点赞同或支持。

赞(0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享