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>
目录
相关文章
|
3月前
|
XML JSON 前端开发
json字符串CSS格式化
完成以上步骤后,你便能在网页中看到格式化后的JSON数据,它们将按照CSS定义的样式进行展示,使数据更易于阅读和理解。通过有效地结合JSON和CSS,你可以创建出更加丰富且易于交互的网页内容。
212 64
|
2月前
|
JSON JavaScript 前端开发
js如何格式化一个JSON对象?
js如何格式化一个JSON对象?
110 3
|
3月前
|
JSON JavaScript 数据格式
vue写入json数据到文本中+vue引入cdn的用法
vue写入json数据到文本中+vue引入cdn的用法
59 10
|
3月前
|
XML JSON 前端开发
json字符串CSS格式化
json字符串CSS格式化
72 4
|
4月前
|
JSON JavaScript 前端开发
Vue项目使用Cookie,以Json格式存入与读取Cookie,设置过期时间以及删除操作
这篇文章介绍了在Vue项目中如何使用JavaScript操作Cookie,包括设置、读取、设置过期时间以及删除Cookie的方法。
302 0
|
4月前
|
存储 资源调度 JavaScript
package.json——从vue的package.json来详细说明package.json内容
package.json——从vue的package.json来详细说明package.json内容
184 0
|
4月前
|
JSON 数据格式
Sublime Json 格式化
Sublime Json 格式化
68 0
|
5月前
|
JSON JavaScript 数据格式
vue 处理JSON文件——上传导入、下载导出、在线预览
vue 处理JSON文件——上传导入、下载导出、在线预览
172 7
|
5月前
|
JavaScript
Vue如何查看node版本---- package.json 文件中的 engines
Vue如何查看node版本---- package.json 文件中的 engines
|
5月前
|
JavaScript
vue项目中package.json的个人见解
总的来说,package.json文件是Vue项目的心脏,它记录了项目运行所需的所有信息,是项目能够顺利运行和维护的关键。
92 0
下一篇
DataWorks