专栏首页python3jQuery格式化显示json数据

jQuery格式化显示json数据

一、概述

JSONView

在gitlab上面,有一个jQuery JSONView插件,地址为:https://github.com/yesmeck/jquery-jsonview

demo地址:http://yesmeck.github.io/jquery-jsonview/

注意:部分key前面有一个减号,点击减号,就可以收缩了。点击加号,可以展开。

但是这样有一个问题,我需要用鼠标copy时,会带有减号。复制之后,就是一个错误的数据!!!

jquery.json-viewer.js

下载地址为:http://www.jq22.com/jquery-info13551

demo地址:http://www.jq22.com/yanshi13551

注意:下载需要登录jq22.com账号

效果如下:

这个才是我们想要的效果,注意:它有竖条,可以方便查看层级关系。

而且copy数据时,也不会带有多余的符号。点击三角形符号,也可以方便收缩和展开!!

需求

有这样一个需求,我用django开发一个接口,需要给其他人员展示数据。展示数据时,默认直接展开json 格式化好的数据,方便其他开发人员调用。

但是jq22.com 提供的插件,有一个textarea输入框,我需要把它给去掉。

默认json格式化的数据中,key是没有带双引号的,我需要默认勾选它,因此要修改js代码。

二、修改插件代码

基于上面的2点需求,下载jq22.com 提供的插件后,解压代码。

修改index.html,完整代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery查看json格式数据插件</title>
    <link rel="stylesheet" type="text/css" href="http://www.jq22.com/jquery/bootstrap-3.3.4.css">
    <link href="css/jquery.json-viewer.css" type="text/css" rel="stylesheet"/>
    <style>
        body {
            background-color: #F7F7F7
        }
    </style>
</head>
<body>
<div>
    <div style="margin-top: 1em;">
        <div>
            <pre id="json-renderer"></pre>
        </div>
    </div>
</div>
<script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script>
<script src="js/jquery.json-viewer.js"></script>
<script type="text/javascript">
    $(function () {
        // json数据
        var json = {
            "id": 1001,
            "type": "donut",
            "name": "Cake",
            "description": "http://www.jq22.com",
            "price": 2.55,
            "available": {
                store: 42,
                warehouse: 600
            },
            "topping": [
                {"id": 5001, "type": "None"},
                {"id": 5002, "type": "Glazed"},
                {"id": 5005, "type": "Sugar"},
                {"id": 5003, "type": "Chocolate"},
                {"id": 5004, "type": "Maple"}
            ]
        };

        //格式化json
        try {
            var input = eval('(' + JSON.stringify(json) + ')');
        } catch (error) {
            return alert("Cannot eval JSON: " + error);
        }
        var options = {
            //为Key添加双引号
            withQuotes: true
        };
        $('#json-renderer').jsonViewer(input, options);
    });
</script>
</body>
</html>

直接用谷歌浏览器打开,效果如下:

三、嵌入到Django项目中

创建django项目

使用Pycharm创建一个Django项目,项目名为:json_view

创建静态目录

在项目根目录创建 static 文件夹,在static 文件夹里面,创建 plugins 文件夹。

将上面修改好的插件,复制到此目录。

将index.html 复制到 templates 目录下。

将index.html中的 http引用资源,下载到本地

wget http://www.jq22.com/jquery/bootstrap-3.3.4.css
wget http://www.jq22.com/jquery/jquery-1.10.2.js

放到对应的目录中

此时,目录结构如下:

./
├── application
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── json_view_demo
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
├── static
│   └── plugins
│       └── json-viewer
│           ├── css
│           │   ├── bootstrap-3.3.4.css
│           │   └── jquery.json-viewer.css
│           ├── index.html
│           ├── jquery
│           ├── js
│           │   ├── jquery-1.10.2.js
│           │   ├── jquery-1.11.0.min.js
│           │   └── jquery.json-viewer.js
│           └── www.jq22.com.txt
└── templates
    └── index.html

修改 json_view/settings.py,设置静态目录

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR,"static"),
)

修改  json_view/urls.py,增加路由

from django.contrib import admin
from django.urls import path
from application import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index),
    path('json/', views.json_data),
]

修改 application/view.py,增加视图函数

from django.shortcuts import render,HttpResponse
import json

# Create your views here.
def index(request):
    return render(request, 'index.html')

def json_data(request):
    print(request.POST)
    data = {"id":1001,"type":"donut","name":"Cake","description":"http://www.jq22.com","price":2.55,"available":{'store':42,'warehouse':600},"topping":[{"id":5001,"type":"None"},{"id":5002,"type":"Glazed"},{"id":5005,"type":"Sugar"},{"id":5003,"type":"Chocolate"},{"id":5004,"type":"Maple"}]}
    return HttpResponse(json.dumps(data))

修改 templates/index,调整静态资源引用路径,json改为ajax获取。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery查看json格式数据插件</title>
    <link rel="stylesheet" type="text/css" href="/static/plugins/json-viewer/css/bootstrap-3.3.4.css">
    <link href="/static/plugins/json-viewer/css/jquery.json-viewer.css" type="text/css" rel="stylesheet"/>
    <style>
        body {
            background-color: #F7F7F7
        }
    </style>
</head>
<body>
<div>
    <div style="margin-top: 1em;">
        <div>
            <pre id="json-renderer"></pre>
        </div>
    </div>
</div>
{% csrf_token %}
<script src="/static/plugins/json-viewer/js/jquery-1.10.2.js"></script>
<script src="/static/plugins/json-viewer/js/jquery.json-viewer.js"></script>
<script type="text/javascript">
    $(function () {
        var csrf = $("[name=csrfmiddlewaretoken]").val();  //csrf
            $.ajax({  //发送ajax请求
                url: '/json/',
                type: 'POST',
                data: {
                    'csrfmiddlewaretoken': csrf,
                },
                success: function (data) {
                    try {
                        var input = eval('(' + data + ')');
                    } catch (error) {
                        return alert("Cannot eval JSON: " + error);
                    }
                    var options = {
                        //为Key添加双引号
                        withQuotes: true
                    };
                    $('#json-renderer').jsonViewer(input, options);
                }
            });
    });
</script>
</body>
</html>

使用Pycharm启动项目,访问首页:

http://127.0.0.1:8000/

效果如下:

另外我提供了一个demo,更换bootstrap版本,去除了多余的静态文件。

github地址如下:

https://github.com/py3study/json_view_demo

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python爬虫爬取百度翻译之数据提取方法

    工具:Python 3.6.5、PyCharm开发工具、Windows 10 操作系统

    py3study
  • python解析与组装json

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3...

    py3study
  • Python- Json模块

    py3study
  • Go语言中自动选择json解析库

    golang官方为我们提供了标准的json解析库–encoding/json,大部分情况下,使用它已经够用了。不过这个解析包有个很大的问题–性能。它不够快,如果...

    飞雪无情
  • JSON——轻量级数据格式

    很多公司的加班是今天做昨天的事情,或者今天做今天还没完成的事情,反正加班是因为做不完事情,而我理解的加班应该是今天要把明天的事情做完,这个月把下个月的事情做完,...

    stormwen
  • python中的json模块

    JSON(JavaScriptObjectNotation)格式最初是为JavaScript开发的,但随后成了一种常见文件格式,被包括python在内的众多语言...

    于小勇
  • 你所不知道的php json编码解码

    json解析在php,或者说在任何编程语言中都非常常见。但是,你是否知道,json解析在php中是以扩展形式存在。

    写PHP的老王
  • 学会用Go解析复杂JSON的思路

    Go语言自带的encode/json包提供了对JSON数据格式的编码和解码能力。之前的文章《如何控制Go编码JSON数据格式的行为》已经介绍了编码JSON时常见...

    KevinYan
  • 老男孩Python全栈开发(92天全)视频教程 自学笔记21

    玩蛇的胖纸
  • Go 语言网络编程系列(九)—— JSON 处理篇:JSON 编解码基本使用入门

    Go 语言内置了 encoding/json 标准库对 JSON 进行支持,开发者可以通过它轻松生成和解析 JSON 格式数据,下面我们来简单演示下这个库的使用...

    学院君

扫码关注云+社区

领取腾讯云代金券