vue如何实现Json格式数据展示

目录
  • Json格式数据展示
  • vue解析json数据

Json格式数据展示

vue的jsonViewer组件也很好用,在网上看到有大神自己写的组件(递归调用),觉得很好,稍作修改,记录一下

JSON.stringify(obj, null, 4) 

可以美化json数据的显示

<span class="light">要高亮的内容</span> 在json数据中,如果有需要高亮的内容,用以上标签包起来(这个要处理数据实现了,组件里高亮样式可以根据需要自己修改)

<template>
    <div class="bgView">
        <div :class="['json-view', length ? 'closeable' : '']" :style="'font-size:' + fontSize+'px'">
            <span @click="toggleClose" :class="['angle', innerclosed ? 'closed' : '']" 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" @click="toggleClose" style="cursor: pointer;">
                       {{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 v-if="item.isJSON"
                                :closed="closed"
                                :key="index"
                                :json="item.value"
                                :jsonKey="item.key"
                                :depth="depth+1"
                                :expandDepth="expandDepth"
                                :isLast="index === items.length - 1"></json-view>
                        <p v-else class="json-item" :key="index">
                            <span class="json-key">
                            {{(isArray ? '' : '"' + item.key + '":')}}
                            </span>
                            <span class="json-value" v-html="item.value + (index === items.length - 1 ? '' : ',')"/>
                        </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: true
            },
            isLast: {
                type: Boolean,
                default: true
            },
            fontSize: {
                type: Number,
                default: 13
            },
            expandDepth: {
                type: Number,
                default: 0
            },
            depth: {
                type: Number,
                default: 0
            }
        },
        created() {
            this.innerclosed = !this.closed ? this.closed : this.depth >= this.expandDepth
            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: #efefef;
        font-family: NotoSansCJKkr;
    }

    .json-view {
        position: relative;
        display: block;
        width: 100%;
        height: 100%;
        /* white-space: nowrap; */
        padding: 0 20px;
        box-sizing: border-box;
        line-height: 30px;
    }

    .json-note {
        color: #909399;
    }

    .json-key {
        color: #333333;
    }

    .json-value {
        color: #333333;
    }

    .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;
    }

    .light {
        color: #0595ff;
    }
</style>

vue解析json数据

在前端接授到json后,使用JSON.parse(jsonObject)就可以解析!(jsonObject为json对象)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue+vuex+json-seiver实现数据展示+分页功能

    一丶项目分析 1.UI: 2.接口信息: 二丶项目环境 Mockjs:生成模拟数据(含中文名,以及地址) json-server:模拟后端接口 webpack-dev-server:开启服务器环境+接口代理 jquery:使用jquery的ajax拉取数据 vue+vuex:vuex负责数据交互,vue渲染页面 iviewui:ui组件,方便布局 搭建开发环境 1.基本环境 Vue起步(无cli) 安装: npm install --save Mockjs 使用: 详细API:mockjs.co

  • vue.js实现数据库的JSON数据输出渲染到html页面功能示例

    本文实例讲述了vue.js实现数据库的JSON数据输出渲染到html页面功能.分享给大家供大家参考,具体如下: 1.首先通过json.php把数据库给输出为json格式的数据 [ { "id":1, "resname":"百度", "resimg":"http://www.baidu.com/1.jpg", "resint":"2018-1-18", "re

  • Vue 实现把表单form数据 转化成json格式的数据

    目的:Vue 中 把表单form数据 转化成json格式的数据 第一步:创建一个数据集(就是你表单需要的数据) 如果你表单都是一些正常的数据,比如 text 什么的.你定义好数据集,就去用 v-model 绑定数据.这样就可以实现数据同步了. 数据集 v-model绑定 如果你的数据不全是这种可以用 v-model 绑定的数据,比如我这个里面需要获取一个 img 的 src 的值.那么下面就需要你想办法把数据给绑定上去了 第二步:转化json 上面第一步,我们已经通过 自动 + 手动 的方式把我

  • vue-resourse将json数据输出实例

    本文主要讲v-resourse 获取json数据并传递到DOM中,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.demo目录,不要管index.html和index.js 2.html页面 vue-resourse-josn1.1.html展示json中的数据 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>

  • vue如何实现Json格式数据展示

    目录 Json格式数据展示 vue解析json数据 Json格式数据展示 vue的jsonViewer组件也很好用,在网上看到有大神自己写的组件(递归调用),觉得很好,稍作修改,记录一下 JSON.stringify(obj, null, 4) 可以美化json数据的显示 <span class="light">要高亮的内容</span> 在json数据中,如果有需要高亮的内容,用以上标签包起来(这个要处理数据实现了,组件里高亮样式可以根据需要自己修改) <

  • jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例

    本文实例讲述了jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作.分享给大家供大家参考,具体如下: 1.先给json格式的数据: [ {"id":1,"name":"stan"}, {"id":2,"name":"jack"}, {"id":3,"name":"lucy"}, {"id&quo

  • vue+echarts+datav大屏数据展示及实现中国地图省市县下钻功能

    随着前端技术的飞速发展,大数据时代的来临,我们在开发项目时越来越多的客户会要求我们做一个数据展示的大屏,可以直观的展示用户想要的数据,同时炫酷的界面也会深受客户的喜欢. 大屏展示其实就是一堆的图表能够让人一目了然地看到该系统下的一些基本数据信息的汇总,也会有一些实时数据刷新,信息预警之类的.笔者在之前也做过一些大屏类的数据展示,但是由于都是一些图表类的,觉得没什么可说的,加之数据也都牵扯到公司,所以没有沉淀下来什么. 最近有朋友要做一个大屏,问了自己一个问题,自己也刚好做了一个简单的大屏数据展示

  • Python3中对json格式数据的分析处理

    前言 数据已经过修改,以防泄密,请放心阅读 今天同事提出一个需求,要求我修改之前的某脚本,该脚本的作用是获取zabbix监控系统返回的json数据,我的任务是使其变成易读的文本,如何获取数据不在此赘述,只描述如何对json数据进行处理 一.如何将json数据转换成python内部的数据类型 展示一下zabbix的接口返回的json数据(数据经过dumps编码了,因为原数据为str类型,只有一行,不易读) js = json.dumps(get_alert(), indent=4, ensure_

  • springboot 返回json格式数据时间格式配置方式

    目录 返回json格式数据时间格式配置 返回JSON日期格式问题 返回json格式数据时间格式配置 数据库里面查出来的时间是时间错格式,前段需要处理才能展示相应的格式,自己一个个转的话太麻烦,所以可以在apllication.property加入下面配置就可以 #时间戳统一转换 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss spring.jackson.time-zone=GMT+8 其中time-zone是时区偏移设置,如果不指定的话时间和北京时

  • JS对象与JSON格式数据相互转换

    目前的项目数据交互几乎都用JQuery,所以处理流程是:前端页面数据->JS对象->jQuery提交->python处理,另外一种就是倒过来.python肯定不能直接处理JS对象数据,所以要把JS对象转换成为python能处理的一种数据格式(通常是字典dict),同样,python取数据反馈到前端也要把字典数据转换成JS能处理的对象,这个中间转换数据格式通常就是JSON. 一.JS对象转换成为JSON 流程:读取前端页面数据,组装成为JS对象,并通过jQuery的$.post()方法传递

  • SpringMVC环境下实现的Ajax异步请求JSON格式数据

    一 环境搭建 首先是常规的spring mvc环境搭建,不用多说,需要注意的是,这里需要引入jackson相关jar包,然后在spring配置文件"springmvc-servlet.xml"中添加json解析相关配置,我这里的完整代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schem

  • jquery解析json格式数据的方法(对象、字符串)

    本文实例讲述了jquery解析json格式数据的方法.分享给大家供大家参考,具体如下: json数据是我们常用的一种小型的数据实时交换的一个东西,他可以利用jquery或js进行解析,下面我来介绍jquery解析json字符串方法. 一.jQuery解析Json数据格式: 使用这种方法,你必须在Ajax请求中设置参数: dataType: "json" 获取通过回调函数返回的数据并解析得到我们想要的值,看源码: jQuery.ajax({ url: full_url, dataType

  • 如何将ajax请求返回的Json格式数据循环输出成table形式

    首先,Ajax请求数据,(用的是Jquery的Ajax) 复制代码 代码如下: <script> $(function(){ $('#test').click(function(){ $.ajax({ url:'__APP__/Article/jsonTest', type:'post', success:function(data){ var item; $.each(data,function(i,result){ item = "<tr><td>&quo

  • 实例详解JSON数据格式及json格式数据域字符串相互转换

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. 基础结构 JSON建构于两种结构: 1. "名称/值"对的集合(A collection of name/value pairs).不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash t

随机推荐