在页面上显示格式化后的json字符串,可读行大大增强

调用方法:var tt = syntaxHighlight(getFormatData(str));
js代码:

        function getFormatData(json) {
            var json = json + "";
            if (json.indexOf('{') == -1 && json.indexOf('[') == -1) {
                return json;
            } else {
                return (formatJson(json));
            }

        }


        function formatJson(json) {
            var i = 0,
                il = 0,
                //tab = "    ",
                tab = "    ",
                newJson = "",
                indentLevel = 0,
                inString = false,
                currentChar = null;
            for (i = 0, il = json.length; i < il; i += 1) {
                currentChar = json.charAt(i);
                switch (currentChar) {
                    //case '{':
                    case '[':
                        if (!inString) {
                            newJson += currentChar + "<br/>\r\n" + repeat(tab, indentLevel + 1);
                            indentLevel += 1
                        } else {
                            newJson += currentChar
                        }
                        break;
                    //case '}':
                    case ']':
                        if (!inString) {
                            indentLevel -= 1;
                            newJson += "<br/>\r\n" + repeat(tab, indentLevel) + currentChar
                        } else {
                            newJson += currentChar
                        }
                        break;
                    case ',':
                        if (!inString) {
                            newJson += ",<br/>\r\n" + repeat(tab, indentLevel)
                        } else {
                            newJson += currentChar
                        }
                        break;
                    case ':':
                        if (!inString) {
                            newJson += ": "
                        } else {
                            newJson += currentChar
                        }
                        break;
                    case ' ':
                    case "\n":
                    case "\t":
                        if (inString) {
                            newJson += currentChar
                        }
                        break;
                    case '"':
                        if (i > 0 && json.charAt(i - 1) !== '\\') {
                            inString = !inString
                        }
                        newJson += currentChar;
                        break;
                    default:
                        newJson += currentChar;
                        break
                }
            }
            return newJson
        }
        function repeat(s, count) {
            return new Array(count + 1).join(s)
        }


        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>';
                }
            );
        }

转载请说明出处:第六感博客 原文链接:

标签: jQuery json

相关阅读:

bootcdn又挂了(bootcss.com),推荐几个其他cdn的站点

ckeditor上传图片中的几个问题 图片最大宽度550px

js javascript判断是否为手机访问,根据访问自动跳转站点