vue-json-editor json编辑器

摘要:
json-change,json-save,has-error这3个事件,是会实时触发的。这里我额外加了一个检测方法,用来判断json数据是否正确。默认标记为true,当不正确时,会改变状态为false。
一、概述

现有一个vue项目,需要一个json编辑器,能够格式化json数据,同时也支持编辑功能。

vue-json-editor 插件就可以实现这个功能

二、vue-json-editor使用

安装插件

npm install vue-json-editor --save

使用

test.vue

<template>
  <div style=" 70%;margin-left: 30px;margin-top: 30px;">
    <vue-json-editor
      v-model="resultInfo":showBtns="false":mode="'code'"lang="zh"@json-change="onJsonChange"@json-save="onJsonSave"@has-error="onError"
    />
    <br>
    <el-button type="primary"@click="checkJson">确定</el-button>
  </div>
</template>

<script>
  //导入模块
import vueJsonEditor from 'vue-json-editor'
  export default{
    //注册组件
components: { vueJsonEditor },
    data() {
      return{
        hasJsonFlag:true,  //json是否验证通过
        //json数据
resultInfo: {
          'employees': [
            {
            'firstName': 'Bill',
            'lastName': 'Gates'},
            {
              'firstName': 'George',
              'lastName': 'Bush'},
            {
              'firstName': 'Thomas',
              'lastName': 'Carter'}
          ]
        }
      }
    },
    mounted: function() {
    },
    methods: {
      onJsonChange (value) {
        //console.log('更改value:', value);
        //实时保存
        this.onJsonSave(value)
      },
      onJsonSave (value) {
        //console.log('保存value:', value);
        this.resultInfo =value
        this.hasJsonFlag = true},
      onError(value) {
        //console.log("json错误了value:", value);
        this.hasJsonFlag = false},
      //检查json
checkJson(){
        if(this.hasJsonFlag == false){
          //console.log("json验证失败")
          //this.$message.error("json验证失败")
alert("json验证失败")
          return false} else{
          //console.log("json验证成功")
          //this.$message.success("json验证成功")
alert("json验证成功")
          return true}
      },
    }
  }
</script>

<style>
</style>
View Code

插件参数说明:

<vue-json-editor
      v-model="resultInfo"// 绑定数据resultInfo
      :showBtns="false"// 是否显示保存按钮
      :mode="'code'"// 默认编辑模式
      lang="zh"// 显示中文,默认英文
      @json-change="onJsonChange"// 数据改变事件
      @json-save="onJsonSave"// 数据保存事件
      @has-error="onError"// 数据错误事件
    />

相关说明:

resultInfo 默认绑定的变量,这个变量可以为空,编辑器会显示为{}

:showBtns 这里不显示保存按钮,为什么呢?原因有2个。1. 默认样式不好看。2. 只能当json数据正确,才能点击保存按钮,否则禁止点击。

json-change,json-save,has-error 这3个事件,是会实时触发的。

这里我额外加了一个检测方法,用来判断json数据是否正确。默认标记为true,当不正确时,会改变状态为false。

访问

点击确定,提示成功

vue-json-editor json编辑器第1张

改为错误的,点击确定,会提示失败。

vue-json-editor json编辑器第2张

注意:这个json编辑会带有下来菜单,实际项目中,需要去除,比较用户误操作。

在实际使用中发现几个问题:

1. 输入中文时,传给后端的值不多

2. 输入大量json时,会有部分数据丢失。

因此,我们使用下面的编辑器bin-code-editor

三、bin-code-editor

开发文档|GITHUB

安装模块

npm install bin-code-editor -d

引入

在 main.js 中写入2行

import CodeEditor from 'bin-code-editor';
Vue.use(CodeEditor);

test.vue

<template>
  <div style=" 70%;margin-left: 30px;margin-top: 30px;">
    <b-code-editor v-model="jsonStr":auto-format="true":smart-indent="true"theme="dracula":indent-unit="4":line-wrap="false"ref="editor"></b-code-editor>
    <br>
    <el-button type="primary"@click="onSubumit">提交</el-button>
  </div>
</template>

<script>const jsonData =`{
    "employees": [{
      "firstName": "Bill",
      "lastName": "Gates"}, {
      "firstName": "George",
      "lastName": "Bush"}, {
      "firstName": "Thomas",
      "lastName": "Carter"}]
  }`
  export default{
    data() {
      return{
        jsonStr:jsonData
      }
    },
    methods: {
      //检测json格式
isJSON(str) {
        if(typeofstr == 'string') {
          try{
            varobj=JSON.parse(str);
            if(typeofobj == 'object' &&obj ){
              return true;
            }else{
              return false;
            }

          } catch(e) {
            return false;
          }
        }else if(typeofstr == 'object'  &&str) {
          return true;
        }
      },
      onSubumit(){
        if(!this.isJSON(this.jsonStr)){
          this.$message.error(`json格式错误`)
          return false}
        this.$message.success('json格式正确')
      }
    }
  }
</script>

<style>

</style>
View Code

访问测试页面,效果如下:

vue-json-editor json编辑器第3张

输入错误的值,点击执行,会有提示

vue-json-editor json编辑器第4张

本文参考链接:

https://blog.csdn.net/qq_41956789/article/details/104960794

https://juejin.cn/post/6844904106671210503

免责声明:文章转载自《vue-json-editor json编辑器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何用Netty实现一个轻量级的HTTP代理服务器分享12款 JavaScript 表格控件(DataGrid)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

关于Eclipse插件开发(四)-------给视图加下拉菜单和按钮和加入编辑器.

本例将给视图加入下拉菜单和按钮,同时再为列表添加一个右键菜单. 创建ActionGroup类 加入菜单和按钮的方法与SWT和JFace组件的一样,先创建一个ActionGroup代码如下:  MyActionGroup.java   1 public class MyActionGroup extends ActionGroup { 2 //...

Unity扩展编辑器--类型3:Custom Editors

Custom Editors 加速游戏制作过程的关键是为哪些频繁使用的组件创建自定义的编辑器,为了举例,我们将会使用下面这个极其简单的脚本进行讲解,它的作用是始终保持一个对象注视某一点。 public class LookAtPoint : MonoBehaviour { public Vector3 lookAtPoint = Vector3....

Visual Studio Code教程:基础使用和自定义设置

一、界面介绍1.1 界面介绍 1.2 文件夹和文件的打开 文件——>打开文件夹/打开文件 1.3 新建文件/文件夹 新建文件:  a. 文件——>新建文件;  b. 按Ctrl+n; c. 点文件夹名后面的+号图标。  新建文件夹:  点文件夹名后面的+号图标 1.4 拆分编辑器(分列) 快加键:Ctrl+  点击拆分编辑器图标(右上角)进行...

UNITY3D编辑器插件编写教程

如何让编辑器运行你的代码如何让编辑器运行你的代码 Unity3D 可以通过事件触发来执行你的编辑器代码,但是我们需要一些编译器参数来告知编译器何时需要触发该段代码。 [MenuItem(XXX)]声明在一个函数上方,告知编译器给Unity3D编辑器添加一个菜单项,并且当点击该菜单项的时候调用该函数。触发函数里 可以编写任何合法的代码,可以是一个资源批处理程...

vi编辑器的使用(翻阅和编辑代码)

一,文字的粘贴复制与移动删除   1>,粘贴与复制     -----------------------------基本操作----------------------------------------------------     在命令模式下,以光标所在位置为参考     复制n个字符  --  nyl     复制n个字     --  ...

vi编辑器的三种模式

vi编辑器的三种模式通常来说,vi编辑器有三种模式,分别是一般指令模式、编辑模式与指令行命令模式。 这三种模式的作用分别是: 一般指令模式(command mode) 以 vi 打开一个文件就直接进入一般指令模式了(这是默认的模式,也简称为一般模式)。在这个模式中, 你可以使用上下左右按键来移动光标,你可以使用删除字符或删除整行来处理文件内容, 也可以使用...