vue 格式化展示json(含彩色样式)

简介: vue 格式化展示json(含彩色样式)

实现原理

通过函数 syntaxHighlight 使用html标签包装 json数据,并添加样式

完整范例代码

<template>
    <div style="width: 300px;">
        <pre v-html="formattedJSON"></pre>
    </div>
</template>
<script>
    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>';
        });
    }
 
    export default {
        mounted() {
            this.formattedJSON = syntaxHighlight(this.tabConfig)
        },
        data() {
            return {
                tabConfig: {
                    "defaultTab": "基础信息",
                    "tabList": [
                        {
                            "label": "基础信息",
                            "show": true
                        },
                        {
                            "label": "职业规划",
                            "age": 30,
                        },
                        {
                            "label": "相关要件",
                        }
                    ]
                },
                formattedJSON: ''
            }
        },
    }
</script>
<style scoped>
    /deep/ pre {
        outline: 1px solid #ccc;
        padding: 5px;
        margin: 5px;
    }
 
    /deep/ .string {
        color: green;
    }
 
    /deep/ .number {
        color: darkorange;
    }
 
    /deep/ .boolean {
        color: blue;
    }
 
    /deep/ .null {
        color: magenta;
    }
 
    /deep/ .key {
        color: red;
    }
</style>
目录
相关文章
|
28天前
|
JSON JavaScript IDE
JSON 数据格式化方法
JSON 数据格式化方法
32 3
|
1天前
|
JSON JavaScript 数据格式
vue 处理JSON文件——上传导入、下载导出、在线预览
vue 处理JSON文件——上传导入、下载导出、在线预览
17 7
|
7天前
|
JSON 前端开发 JavaScript
Json格式化
Json格式化
|
15天前
|
JSON 数据格式
Notepad++怎么格式化json文件?
Notepad++怎么格式化json文件?
15 3
|
1天前
|
JSON JavaScript 数据格式
vue 电子表格Excel的上传导入、导出下载、读取本地Excel、json转Excel
vue 电子表格Excel的上传导入、导出下载、读取本地Excel、json转Excel
7 0
|
26天前
|
Web App开发 JavaScript
使用CRXjs、Vite、Vue 开发 Chrome 多页面插件,手动配置 vite.config.ts 和 manifest.json 文件
使用CRXjs、Vite、Vue 开发 Chrome 多页面插件,手动配置 vite.config.ts 和 manifest.json 文件
27 0
|
2月前
|
JSON JavaScript 前端开发
vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户
vue的 blob文件下载文件时,后端自定义异常,并返回json错误提示信息,前端捕获信息并展示给用户
|
2月前
|
JSON JavaScript Java
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
102 0
|
15天前
|
存储 JSON JavaScript
【chat-gpt问答记录】python将数据存为json格式和yaml格式
【chat-gpt问答记录】python将数据存为json格式和yaml格式
27 1
|
2天前
|
存储 JSON JavaScript
使用JSONObject解析与生成JSON数据
使用JSONObject解析与生成JSON数据