电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Vue中使用JsonView來展示Json樹的實例代碼

瀏覽:4日期:2022-10-27 17:17:08

前兩天干活兒有個需求,在前端需要展示可折疊的Json樹,供開發人員查看,這里采用JsonView組件來實現,它是一款用于展示Json的Vue組件,支持大體積的Json文件快速解析渲染,下面記錄一下實現過程。

1.首先先下載好JsonView的組件:JsonView.vue,組件代碼如下:

<template> <div class='bgView'> <div : :style='’font-size:’ + fontSize+’px’'> <span @click='toggleClose' : v-if='length'> </span> <div class='content-wrap'> <p class='first-line'> <span v-if='jsonKey' class='json-key'>'{{jsonKey}}': </span> <span v-if='length'> {{prefix}} {{innerclosed ? (’...’ + subfix) : ’’}} <span class='json-note'> {{innerclosed ? (’ // count: ’ + length) : ’’}} </span> </span> <span v-if='!length'>{{isArray ? ’[]’ : ’{}’}}</span> </p> <div v-if='!innerclosed && length' class='json-body'> <template v-for='(item, index) in items'> <json-view :closed='closed' v-if='item.isJSON' :key='index' :json='item.value' :jsonKey='item.key' :isLast='index === items.length - 1'></json-view> <p v-else :key='index'> <span class='json-key'>{{(isArray ? ’’ : ’'’ + item.key + ’'’)}} </span> : <span class='json-value'>{{item.value + (index === items.length - 1 ? ’’ : ’,’)}} </span> </p> </template> <span v-show='!innerclosed' class='body-line'></span> </div> <p v-if='!innerclosed && length' class='last-line'> <span>{{subfix}}</span> </p> </div> </div> </div></template><script> export default { name: ’jsonView’, props: { json: [Object, Array], jsonKey: { type: String, default: ’’ }, closed: { type: Boolean, default: false }, isLast: { type: Boolean, default: true }, fontSize: { type: Number, default: 13 } }, created() { this.innerclosed = this.closed this.$watch(’closed’, () => { this.innerclosed = this.closed }) }, data() { return { innerclosed: true } }, methods: { isObjectOrArray(source) { const type = Object.prototype.toString.call(source) const res = type === ’[object Array]’ || type === ’[object Object]’ return res }, toggleClose() { if (this.innerclosed) { this.innerclosed = false } else { this.innerclosed = true } } }, computed: { isArray() { return Object.prototype.toString.call(this.json) === ’[object Array]’ }, length() { return this.isArray ? this.json.length : Object.keys(this.json).length }, subfix() { return (this.isArray ? ’]’ : ’}’) + (this.isLast ? ’’ : ’,’) }, prefix() { return this.isArray ? ’[’ : ’{’ }, items() { if (this.isArray) { return this.json.map(item => { const isJSON = this.isObjectOrArray(item) return { value: isJSON ? item : JSON.stringify(item), isJSON, key: ’’ } }) } const json = this.json return Object.keys(json).map(key => { const item = json[key] const isJSON = this.isObjectOrArray(item) return { value: isJSON ? item : JSON.stringify(item), isJSON, key } }) } } }</script><style> .bgView { background-color: #fafafa; } .json-view { position: relative; display: block; width: 100%; height: 100%; white-space: nowrap; padding-left: 20px; box-sizing: border-box; } .json-note { color: #909399; } .json-key { color: rgb(147, 98, 15); } .json-value { color: rgb(24, 186, 24); } .json-item { margin: 0; padding-left: 20px; } .first-line { padding: 0; margin: 0; } .json-body { position: relative; padding: 0; margin: 0; } .json-body .body-line { position: absolute; height: 100%; width: 0; border-left: dashed 1px #bbb; top: 0; left: 2px; } .last-line { padding: 0; margin: 0; } .angle { position: absolute; display: block; cursor: pointer; float: left; width: 20px; text-align: center; left: 0; } .angle::after { content: ''; display: inline-block; width: 0; height: 0; vertical-align: middle; border-top: solid 4px #333; border-left: solid 6px transparent; border-right: solid 6px transparent; } .angle.closed::after { border-left: solid 4px #333; border-top: solid 6px transparent; border-bottom: solid 6px transparent; }</style>

2.在需要使用的vue頁面中引用JsonView組件

import JsonView from ’@/components/JsonView’

3.定義Json數據變量

jsonData:{},

4.頁面展示代碼

<JsonView :json='jsonData'></JsonView>

5.實現效果如下:

Vue中使用JsonView來展示Json樹的實例代碼

JsonViewAttributes

Vue中使用JsonView來展示Json樹的實例代碼

到此這篇關于Vue之使用JsonView來展示Json樹的文章就介紹到這了,更多相關Vue使用JsonView展示Json樹內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
主站蜘蛛池模板: 全自动在线分板机_铣刀式在线分板机_曲线分板机_PCB分板机-东莞市亿协自动化设备有限公司 | 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 直读光谱仪,光谱分析仪,手持式光谱仪,碳硫分析仪,创想仪器官网 | 膜结构停车棚-自行车棚-膜结构汽车棚加工安装厂家幸福膜结构 | 湖北省煤炭供应链综合服务平台| 联系我们老街华纳娱乐公司官网19989979996(客服) | 智慧消防-消防物联网系统云平台| 深圳彩钢板_彩钢瓦_岩棉板_夹芯板_防火复合彩钢板_长鑫 | 超声波乳化机-超声波分散机|仪-超声波萃取仪-超声波均质机-精浩机械|首页 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 合肥注册公司|合肥代办营业执照、2024注册公司流程 | 交通气象站_能见度检测仪_路面状况监测站- 天合环境科技 | ORP控制器_ORP电极价格-上优泰百科 | 流水线电子称-钰恒-上下限报警电子秤-上海宿衡实业有限公司 | 平面钻,法兰钻,三维钻-山东兴田阳光智能装备股份有限公司 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | 商秀—企业短视频代运营_抖音企业号托管| 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 | 无痕胶_可移胶_无痕双面胶带_可移无痕胶厂家-东莞凯峰 | (中山|佛山|江门)环氧地坪漆,停车场地板漆,车库地板漆,聚氨酯地板漆-中山永旺地坪漆厂家 | 螺旋绞龙叶片,螺旋输送机厂家,山东螺旋输送机-淄博长江机械制造有限公司 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | IP检测-检测您的IP质量| 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 智能气瓶柜(大型气瓶储存柜)百科 | 膜结构车棚|上海膜结构车棚|上海车棚厂家|上海膜结构公司 | 学生作文网_中小学生作文大全与写作指导 | 信阳市建筑勘察设计研究院有限公司 | 苗木价格-苗木批发-沭阳苗木基地-沭阳花木-长之鸿园林苗木场 | 大行程影像测量仪-探针型影像测量仪-增强型影像测量仪|首丰百科 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | 建筑资质代办-建筑企业资质代办机构-建筑资质代办公司 | 最新电影-好看的电视剧大全-朝夕电影网 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 老房子翻新装修,旧房墙面翻新,房屋防水补漏,厨房卫生间改造,室内装潢装修公司 - 一修房屋快修官网 |