Vue中使用JsonView進行JSON數據展示

image

前言

??最近在開發公司的管理系統的操作日志模塊,要查看某條操作日志的請求參數,要將請求的參數以 JSON 格式的形式展示出來,于是用到了Vue-JSON-Viewer 這個插件。

一、Vue-JSON-Viewer 基礎入門

插件簡介

??Vue-JSON-Viewer 是一個用于在Vue項目中展示JSON數據的組件,它解決了在項目開發中面臨的展示JSON數據的需求,尤其是當JSON文件體積較大時,也可以快速渲染。用官方的話來說,就是一個專為 Vue.js 框架設計的簡單 JSON 查看器組件,兼容 Vue.js 2.x 及 3.x,并支持服務器端渲染(SSR)。此項目由 JavaScript 編寫,采用 MIT 許可證分發,是處理和展示 JSON 數據的理想選擇,尤其是對于那些需要以可視化方式查看復雜數據結構的開發者來說。

官網地址: https://www.npmjs.com/package/vue-json-viewer

安裝插件

??安裝插件時,可能會遇到因 Vue 版本不匹配導致的安裝或運行錯誤,確保你的 Vue 項目版本與 Vue-JSON-Viewer 的分支相匹配。本文基于 npm 的安裝 Vue-JSON-Viewer 插件,執行命令如下:

# 對于 Vue 2.x
npm install vue-json-viewer@2 --save# 對于 Vue 3.x
npm install vue-json-viewer@3 --save

【注意】如果npm安裝報錯,可換成 cnpm 安裝。

引入插件

??安裝完成后,在項目入口文件中正確引入并注冊該組件。引入插件有兩種方式,可以全局引入,也可以在單個頁面文件中引入該插件。如果在全局 main.js 中引入,那么全局可用,無需在單獨頁面中引入,可直接調用組件。如果在單頁面中使用,則需要引入,才可正常使用。代碼如下:

import Vue from 'vue';
import JsonViewer from 'vue-json-viewer';// 非全局的不用寫這個,直接在組件中使用標簽引入
Vue.use(JsonViewer) 

使用插件

??初次使用者可能不知道如何正確地將數據傳遞給 Vue-JSON-Viewer 組件,或者遇到數據更新組件未響應的情況。我們可以使用 :value 屬性來綁定 JSON 數據,如下所示:

<script setup lang="ts">
import JsonViewer from 'vue-json-viewer'const jsonStr = '{"data":[{"name":"蒙奇·D·路飛","age":18,"sex":"男","address":"風車村"},' +'{"name":"娜美","age":19,"sex":"女","address":"東海歐伊科特王國"}]}';// 注意:綁定得數據一定是JSON,而不是JSON字符串
const jsonData = JSON.parse(jsonStr);
</script>
<template><json-viewer :value="jsonData" copyable></json-viewer>
</template>

??其中,value 代表顯示的JSON數據,copyable 表示可以復制。效果如下圖所示:

image

??對于動態數據更新,確保你的數據對象是響應式的(在 Vue 實例的 data 函數返回的對象里)。如果動態賦值的話,后臺數據返回的可能是一個字符 json,需要 string類型的json串轉換為json格式 處理才能使用,否則會引起報錯。

二、組件的屬性、方法

選項

屬性描述默認值
valueJSON 對象的值,可以使用 v-model,支持響應式
expand-depth默認展開的層級1
copyable展示復制按鈕,支持自定義或者設置 true 使用默認文本。
默認是{"copyText":"copy","copiedText":"copied","timeout":2000}
true
sort按照key排序展示false
boxed為組件添加一個盒樣式false
theme添加一個自定義CSS類名稱jv-light
expanded默認展開視圖false
timeformat自定義時間格式函數time => time.toLocaleString()
preview-mode不可折疊模式,默認全部展開false
show-array-index是否顯示數組索引true
show-double-quotes是否展示key雙引號false

事件

事件描述
copied復制文本后的事件復制的值
keyclick點擊key的事件

??點擊 copy 后,若是我們需要看到被復制后的反應信息提示的話,就需要為復制進行一個事件監聽。這時候,就需要添加一個 @copied 事件即可。

Slots

名稱描述Scope
copy自定義拷貝按鈕{copied: boolean}

三、組件擴展

自定義復制按鈕

<script setup lang="ts">
import JsonViewer from 'vue-json-viewer'const jsonStr = '{"data":[{"name":"蒙奇·D·路飛","age":18,"sex":"男","address":"風車村"},' +'{"name":"娜美","age":19,"sex":"女","address":"東海歐伊科特王國"}]}';// 注意:綁定得數據一定是JSON,而不是JSON字符串
const jsonData = JSON.parse(jsonStr);
const copyable = ref({copyText: '復制',copiedText: '復制完成',timeout: 2000
})
</script>
<template><json-viewer :value="jsonData" :copyable="copyable"></json-viewer>
</template>

image

自定義主題

??添加 theme="my-awesome-json-theme" Vue-JSON-Viewer 的組件屬性,復制粘貼下面的模板并且根據自定義的theme名稱做對應調整:

.my-awesome-json-theme {background: #fff;white-space: nowrap;color: #525252;font-size: 14px;font-family: Consolas, Menlo, Courier, monospace;.jv-ellipsis {color: #999;background-color: #eee;display: inline-block;line-height: 0.9;font-size: 0.9em;padding: 0px 4px 2px 4px;border-radius: 3px;vertical-align: 2px;cursor: pointer;user-select: none;}.jv-button { color: #49b3ff }.jv-key { color: #111111 }.jv-item {&.jv-array { color: #111111 }&.jv-boolean { color: #fc1e70 } // 布爾值&.jv-function { color: #067bca }&.jv-number { color: #fc1e70 } // 數字&.jv-number-float { color: #fc1e70 }// 數字&.jv-number-integer { color: #fc1e70 }// 數字&.jv-object { color: #111111 }&.jv-undefined { color: #e08331 }&.jv-string { // 字符串color: #42b983;word-break: break-word;white-space: normal;}}.jv-code {.jv-toggle {&:before {padding: 0px 2px;border-radius: 2px;}&:hover {&:before {background: #eee;}}}}
}

四、附錄

常見問題

??使用這個插件碰到一個問題就是,引入之后報錯 import JsonViewer from 'vue-json-viewer' 爆紅,提示

在這里插入圖片描述

??解決辦法是創建一個 vue-json-viewer.d.ts 文件,增加如下內容:

declare module 'vue-json-viewer';

五、小結

??初次使用者可能會忽略組件提供的自定義選項,導致無法充分利用其功能。了解如何通過屬性如 boxed、copyable、sort 來調整組件外觀和行為,若要進一步定制樣式,可以通過覆蓋 CSS 類的方式調整,Vue-JSON-Viewer 提供了一系列默認類名,允許個性化設計。利用監聽器(@copied)等事件,可以在用戶復制數據時執行特定操作,增強用戶體驗。

??通過遵循這些步驟,新用戶能夠更順利地集成并利用 Vue-JSON-Viewer 進行JSON數據的展示和管理,提升開發效率和應用的用戶體驗。

image

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74717.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74717.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74717.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue vue3 走馬燈Carousel

背景&#xff1a; 在項目中需要展示多張圖片&#xff0c;但在頁面上只有一張圖片的有限位置&#xff0c;此時考慮使用輪播圖實現多張圖片的展示。element組件官網有走馬燈Carousel的組件詳細介紹。 實現效果&#xff1a; 官網鏈接&#xff1a;點擊跳轉 核心代碼&#xff1a; …

重學vue3(三):vue3基本語法及使用

組合式 API是vue3 的核心特性&#xff0c;替代 Vue2 的選項式 API&#xff0c;強調邏輯復用和代碼組織。基本語法如下&#xff1a; <script setup> import { ref, reactive, computed, onMounted } from vue;// 1. 響應式數據 const count ref(0); // 基本類…

Spring Boot分布式項目異常處理實戰:從崩潰邊緣到優雅恢復

當單體應用拆分成分布式系統&#xff0c;異常就像被打開的潘多拉魔盒&#xff1a;RPC調用超時、分布式事務雪崩、第三方接口突然罷工…在最近的電商大促中&#xff0c;我們的系統就經歷了這樣的至暗時刻。本文將用真實代碼示例&#xff0c;展示如何構建分布式異常處理體系。 一…

導出sql命令

除了之前提到的 \G 命令&#xff0c;以下是其他優化 MySQL 查詢結果顯示的方法&#xff0c;供你參考&#xff1a; --- ### 1. **使用 \T 命令導出結果到文件** - 在 MySQL 命令行中&#xff0c;使用 \T 文件名 可以將查詢結果以表格形式導出到指定文件&#xff0c;便于后續…

TDengine 3.3.2.0 集群報錯 Post “http://buildkitsandbox:6041/rest/sql“

原因&#xff1a; 初始化時處于內網環境下&#xff0c;Post “http://buildkitsandbox:6041/rest/sql“ 無法訪問 修復&#xff1a; vi /etc/hosts將buildkitsandbox映射為本機節點 外網環境下初始化時沒有該問題

深度解析 BPaaS:架構、原則與研發模式探索

在當今復雜多變的業務環境下&#xff0c;軟件開發面臨著諸多挑戰&#xff0c;如何有效地管理業務復雜性并實現系統的可擴展性成為關鍵。BPaaS應運而生&#xff0c;它作為一種創新的理念和架構模式&#xff0c;改變著企業研發的方式。本文將深入探討 BPaaS 是什么&#xff0c;以…

如何在linux中部署dns服務 主備dns (詳細全過程)

環境centos 7.9 主DNS&#xff1a;192.168.60.131 備DNS&#xff1a;192.168.60.134 我以 chenxingyu0.com 指向 192.168.60.200為例 首先是主dns #!/bin/bash# 檢查是否為 root 用戶 if [ "$(id -u)" ! "0" ]; thenecho "請使用…

操作系統導論——第13章 抽象:地址空間

一、早期系統 從內存來看&#xff0c;早期的機器并沒有提供多少抽象給用戶。基本上&#xff0c;機器的物理內存如圖13.1所示 操作系統曾經是一組函數&#xff08;實際上是一個庫&#xff09;&#xff0c;在內存中&#xff08;在本例中&#xff0c;從物理地址0開始&#xff09;&…

云端存儲新紀元:SAN架構驅動的智能網盤解決方案

一、企業存儲的"不可能三角"破局 1.1 傳統存儲架構的困局 性能瓶頸&#xff1a;NAS架構在1000并發訪問時延遲飆升300%容量限制&#xff1a;傳統RAID擴容需停機維護&#xff0c;PB級存儲擴展耗時超48小時成本矛盾&#xff1a;全閃存陣列每TB成本高達$3000&#xff0…

Android adb自身調試log開關

本文介紹下如何打開adb源碼中的debug log 1.adb源碼log是可以動態打開和關閉的&#xff0c;控制邏輯代碼如下 static NoDestructor<std::mutex> log_mutex; static NoDestructor<CachedProperty> log_property GUARDED_BY(log_mutex)("debug.adbd.logging&q…

Axure RP 9.0教程: 基于動態面板的元件跟隨來實現【音量滑塊】

文章目錄 引言I 音量滑塊的實現步驟添加底層邊框添加覆蓋層基于覆蓋層創建動態面板添加滑塊按鈕設置滑塊拖動效果引言 音量滑塊在播放器類APP應用場景相對較廣,例如調節視頻的亮度、聲音等等。 I 音量滑塊的實現步驟 添加底層邊框 在畫布中添加一個矩形框:500 x 32,圓…

rocky linux 與centos系統的區別

Rocky Linux 和 CentOS 都是基于 Red Hat Enterprise Linux&#xff08;RHEL&#xff09;的社區發行版&#xff0c;但兩者在目標定位、更新策略和社區管理上有顯著差異。以下是核心區別的詳細對比&#xff1a; 一、背景與定位 特性Rocky LinuxCentOS起源由 CentOS 聯合創始人…

洛谷題單1-B2002 Hello,World!-python-流程圖重構

題目描述 編寫一個能夠輸出 Hello,World! 的程序。 提示&#xff1a; 使用英文標點符號&#xff1b;Hello,World! 逗號后面沒有空格。H 和 W 為大寫字母。 輸入格式 無 輸出格式 無 輸入輸出樣例 #1 輸入 #1 無輸出 #1 Hello,World!方式-print() 代碼 class Solut…

網絡基礎-路由器和交換機工作配置

三、路由器和交換機的工作原理配置以及華為體系下的小型網絡的搭建 3.1路由基礎 3.1.1數據轉發 通過鏈路層交換機和網絡層路由器進行數據轉發 交換機&#xff08;鏈路層&#xff09;mac地址表的數據轉發路由器&#xff08;網絡層&#xff09; ip路由表的數據轉發 隔離廣播域…

愛普生SG-3031CMA有源晶振在汽車雷達中的應用

隨著自動駕駛技術的普及&#xff0c;汽車雷達已成為高級駕駛輔助系統&#xff08;ADAS&#xff09;和自動駕駛系統的核心感知組件。雷達模塊需要精確的時鐘信號來確保發射/接收時序的準確性、信號處理的同步性以及低功耗運行。這些系統對時鐘信號的穩定性、抗干擾性及環境適應性…

案例實踐 | 招商局集團以長安鏈構建“基于DID的航運貿易數據資產目錄鏈”

概覽 案例名稱 基于DID的航運貿易數據資產目錄鏈 業主單位 招商局集團 上線時間 2024年10月 用戶群體 供數用數企業和個人 用戶規模 集團內20企業 案例背景 招商局集團深入落實“促進數據高效流通使用、賦能實體經濟”精神&#xff0c;深化集團數字化水平&#xff0c…

【docker】docker-compose安裝RabbitMQ

docker-compose安裝RabbitMQ 1、配置docker-compose.yml文件&#xff08;docker容器里面的目錄請勿修改&#xff09;2、啟動mq3、訪問mq4、查看服務器映射目錄5、踩坑5.1、權限不足 1、配置docker-compose.yml文件&#xff08;docker容器里面的目錄請勿修改&#xff09; versi…

Maven工具學習使用(二)——Maven基礎用法

pom常見屬性說明 詳細見官方文檔說明 https://maven.apache.org/ref/3.8.6/maven-model/maven.html#class_releases <modelVersion>4.0.0</modelVersion> POM模型的版本 <groupId>org.apache.maven.plugins</groupId> 項目屬于哪個組&#xff…

藍橋杯高頻考點——二分(含C++源碼)

二分 基本框架整數查找&#xff08;序列二分的模版題 建議先做&#xff09;滿分代碼及思路solution 子串簡寫滿分代碼及思路solution 1&#xff08;暴力 模擬雙指針70分&#xff09;solution 2&#xff08;二分 AC&#xff09; 管道滿分代碼及思路樣例解釋與思路分析solution 最…

【谷粒商城踩坑記】第五坑 拖拽組件三級菜單拖不了問題

第五坑 拖拽組件三級菜單拖不了問題 直接進入或刷新頁面后,拖動第三級菜單項,無法修改排序位置&#xff0c;我嘗試了直接用源碼包中提供的老師的代碼也不行&#xff0c;本身就有這個小 Bug &#xff0c;或者說是其它什么地方有問題。 原始內容是這樣的。 countNodeLevel(node){…