一. 格式化json数据,高亮、自定义样式
- 定义处理函数
- 调用函数,将待处理的数据传入
- 利用
<pre v-html></pre>
标签(格式化文本)展示
export default function syntaxHighlight(json:any){
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) {
let cls = 'color:#D19A66';
if (/^"/.test(match)) {
if (/:$/.test(match)) {
cls = 'color:#F92A0F';
} else {
cls = 'color:#44C91B';
}
} else if (/true|false/.test(match)) {
cls = 'color:#1B73C9';
} else if (/null/.test(match)) {
cls = 'color:#C586C0';
}
return `<span style=${cls}>${match}</span>`;
});
}
const data = reactive({
code:'200',
message:'成功',
data:[
{
name:'三国演义',
id:'sgyy'
},
{
name:'西游记',
id:'xyj'
}
]
})
const jsonData = syntaxHighlight(data)
<pre v-html="jsonData"></pre>

二. 格式化json数据,折叠、自定义样式
- 安装插件:
npm install vue-json-viewer --save
npm install clipboard --save
npm install vue3-json-viewer --save
- 引入并注册
import JsonViewer from 'vue-json-viewer'
Vue.use(JsonViewer)
import JsonViewer from "vue3-json-viewer"
const app=createApp(App)
app.use(JsonViewer)
app.mount('#app')
- 使用
<json-viewer
:value="jsonData"
:expand-depth="5"
copyable
boxed
sort
theme="my-json-theme">
</json-viewer>
.my-json-theme{
/deep/ .jv-key{}
/deep/ .jv-item{}
/deep/ .jv-string{}
/deep/ .jv-boolean{}...
}
.jv-my-json-theme{
:deep(.jv-key){}...
}
- api说明
参数 | 说明 | 默认值 |
---|
value | JSON数据(支持和v-model一起之用) | 必填 |
expand-depth | 默认展开的层级 | 1 |
copyable | 显示复制按钮,可自定义按钮{copyText:‘copy’},或者使用true | false |
sort | 按照key排序(key的首字母的顺序) | false |
boxed | 给组件添加一个盒状样式 | false |
theme | 添加一个自定义的样式class用作主题 | jv-light |
- 效果
