Skip to content

展示 JSON 数据

安装依赖:

shell
pnpm i vue-json-pretty

创建组件

vue
<script lang="ts" setup>
import VueJsonPretty from 'vue-json-pretty'
import 'vue-json-pretty/lib/styles.css'

const props = defineProps({
  data: { type: Object }, // 要展示的json数据
  showLineNumber: { type: Boolean, default: false }, // 显示行号
  showLength: { type: Boolean, default: true }, // 显示缩进线
  showIcon: { type: Boolean, default: true }, // 显示折叠按钮
  deep: { type: Number, default: 2 },
})
</script>

<script lang="ts">
export default {
  name: 'VueJson',
}
</script>

<template>
  <VueJsonPretty
    :show-line-number="showLineNumber"
    :show-length="showLength"
    :show-icon="showIcon"
    :data="data"
  />
</template>

<style scoped>
:deep(.vjs-tree-node:hover) {
  background-color: rgba(125, 125, 125, 0.3);
}
</style>

使用

vue
<script setup lang="ts">
import VueJson from './components/VueJson.vue'

const data = {
  compilerOptions: {
    target: 'ESNext',
    useDefineForClassFields: true,
    module: 'ESNext',
    moduleResolution: 'Node',
    strict: true,
    jsx: 'preserve',
    sourceMap: true,
    resolveJsonModule: true,
    isolatedModules: true,
    esModuleInterop: true,
    lib: ['ESNext', 'DOM'],
    skipLibCheck: true,
  },
  include: ['src/**/*.ts', 'src/**/*.d.ts', 'src/**/*.tsx', 'src/**/*.vue'],
  references: [{ path: './tsconfig.node.json' }],
}
</script>

<template>
  <div>
    <VueJson :data="data" />
  </div>
</template>

<style scoped></style>

props

prop介绍数据类型默认值
datajson 数据Object
showLineNumber显示行号Booleanfalse
showLength显示缩进线Booleantrue
showIcon显示折叠按钮Booleantrue
deep大于此深度的路径将被折叠Number2