vue中json格式化显示数据(vue-json-viewer)

 更新时间:2024年05月27日 09:03:04   作者:白桃与猫  
这篇文章主要给大家介绍了关于vue中json格式化显示数据(vue-json-viewer)的相关资料,Vue-json-viewer是一个Vue组件,用于在Vue应用中显示JSON数据的可视化工具,需要的朋友可以参考下

1. 安装

使用npm:

$ npm install vue-json-viewer@2 --save
// Vue2
$ npm install vue-json-viewer@3 --save
// Vue3

使用yarm:

$ yarn add vue-json-viewer@2 
// Vue2
$ yarn add vue-json-viewer@3 
// Vue3

使用pnpm也可以

2. 使用方法

main.ts中注册插件

import { createApp } from 'vue';
import JsonViewer from 'vue-json-viewer'
import App from './App.vue';

const app = createApp(App);
app.use(JsonViewer )

app.mount('#app');

在界面中使用

<template>
	 <json-viewer
          :value="data"
          :expand-depth="5"
          copyable
          boxed
          sort
          class="w-100%"></json-viewer>
</template>
<script setup lang="ts">
 const data =  {// 注意:绑定得数据一定是JSON,而不是JSON字符串
      total: 25,
      limit: 10,
      data: [
        {
          id: '5968fcad629fa84ab65a5247',
          firstname: 'Ada',
          lastname: 'Lovelace',
        },
      ],
    };
</script>

注意:在main.ts文件中可能会出现以下得ts类型报错:

无法找到模块“vue-json-viewer”的声明文件。

解决方法:

  • 先尝试安装 npm i --save-dev @types/vue-json-viewer
  • 如果上面方法不行,在全局的.d.ts 结尾的文件中添加上declare module 'vue-json-viewer'

3. json-viewer属性和方法

json-viewer属性:

json-viewer事件监听:

json-viewer插槽:

json-viewer快捷键:

4. 表格中原始数据和格式化数据切换

实现:给表格中每行数据单独添加一个变量,用于单独控制展示的方式。

   //获取到表格数据后,添加一个自定义变量,记录json显示的方式
    state.tableData.forEach((item) => {
      item.showJsonView = false;
    });
   <!--el-table-column 插槽中  -->
     <template #default="scope">
            <div v-if="col.key === 'accountConfig'">
              <el-link
                type="primary"
                :underline="false"
                @click="() => (scope.row.showJsonView = !scope.row.showJsonView)">
                {{ scope.row.showJsonView ? '原始数据' : '格式化数据' }}
              </el-link>
              <div v-if="scope.row.showJsonView">
                <json-viewer
                  :value="JSON.parse(scope.row[col.key])"
                  :expand-depth="1"
                  copyable></json-viewer>
              </div>
              <div v-else>
                <pre class="text-pre-wrap">{{ scope.row[col.key] }}</pre>
              </div>
            </div>
            <div v-else>
              {{ scope.row[col.key] }}
            </div>
          </template>

注:如果表格中有el-switch, 单独控制每行的操作,请求时显示的loading,也是同样的方法实现。

5. 自定义主题:

  • 添加 theme="my-awesome-json-theme" 到JsonViewer的组件属性上
  • 复制粘贴下面的模板并且根据自定义的theme名称做对应调整。
// values are default one from jv-light template
.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;
        }
      }
    }
  }
}

总结 

到此这篇关于vue中json格式化显示数据(vue-json-viewer)的文章就介绍到这了,更多相关vue中json格式化显示内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue.Draggable实现拖拽效果

    Vue.Draggable实现拖拽效果

    这篇文章主要介绍了Vue.Draggable实现拖拽效果,使用简单方便 ,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Vue如何实现利用vuex永久储存数据

    Vue如何实现利用vuex永久储存数据

    这篇文章主要介绍了Vue如何实现利用vuex永久储存数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Vue-admin-template 报Uncaught (in promise) error问题及解决

    Vue-admin-template 报Uncaught (in promise) error问题及解决

    这篇文章主要介绍了Vue-admin-template 报Uncaught (in promise) error问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • VUE和Antv G6实现在线拓扑图编辑操作

    VUE和Antv G6实现在线拓扑图编辑操作

    这篇文章主要介绍了VUE和Antv G6实现在线拓扑图编辑操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • vuejs 动态添加input框的实例讲解

    vuejs 动态添加input框的实例讲解

    今天小编就为大家分享一篇vuejs 动态添加input框的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Vue项目中实现AES加密解密的全过程

    Vue项目中实现AES加密解密的全过程

    AES算法是一种对称加密算法,用于加密和解密数据,下面这篇文章主要给大家介绍了关于Vue项目中实现AES加密解密的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • vue3+vite+移动端webview打包后页面加载空白问题解决办法

    vue3+vite+移动端webview打包后页面加载空白问题解决办法

    这篇文章主要给大家介绍了关于vue3+vite+移动端webview打包后页面加载空白问题的解决办法,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-06-06
  • Vue3使用FcDesigner生成一个文档的示例代码

    Vue3使用FcDesigner生成一个文档的示例代码

    FcDesigner是基于Vue3.0的低代码可视化表单设计器,可数据驱动表单渲染,提高开发效率,本文给大家介绍了Vue3如何使用FcDesigner生成一个文档,需要的朋友可以参考下
    2026-05-05
  • Electron store及shareObject进程间数据交互存储功能封装

    Electron store及shareObject进程间数据交互存储功能封装

    这篇文章主要为大家介绍了Electron store及shareObject进程间数据交互存储功能封装示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 基于element-ui表格的二次封装实现

    基于element-ui表格的二次封装实现

    本文主要介绍了基于element-ui表格的二次封装实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07

最新评论