js对json数据进行操作
不止增删改查,有一点点类似于数据库,也是朝着这个方向发展

如有问题,可以在评论区提出,或者去gitee上说明

最后麻烦如果可以,请点击star和fork

qk-json

作者:QuKin

邮箱:13606184008@163.com

了解

介绍:js对json数据进行操作

版本:V1.3.2

方法简洁明了的操作

有没有为网上哪些对json操作感到厌烦的
有些甚至还无法完成
感觉写出来不优雅的
都可以瞅瞅这个包,代码简洁好用,并且操作方式也非常的简单
源码使用JS类写的并且有注释,不会还可以去看文档,文档连接在下方
如果觉得这个方法好的,还可以从源码里面下载下来直接在你的项目中用
我就不把所有方法列出来了,比较多,好像有二十多个方法呢
如果没有npm,还提供了一个js方法,直接script src导入即可

安装

NPM

npm i qk-json

CDN

开发板

https://unpkg.com/qk-json@1.3.2/qk-json.js

https://cdn.jsdelivr.net/gh/QuKin/qk-json/qk-json.js

压缩版

https://unpkg.com/qk-json@1.3.2/qk-json.min.js

https://cdn.jsdelivr.net/gh/QuKin/qk-json/qk-json.min.js

源码

Gitee

GitHub

文档

国内

国外

更新说明

V1.3.0

更新了四种常用的连表查询:内连接、左连接、右连接和完全连接,还有json去重

目录结构

|- docs 开发文档
|- ------- …
|- index.html 重定向到开发文档内
|- index.js 针对node的源码
|- LICENSE 许可证
|- package.json node配置文件
|- qk-json.js 针对DOM的源码
|- qk-json.min.js 针对DOM的源码,压缩后
|- README.md 文档
|- test.js 测试代码
|- test.json 测试代码用到的json数据

使用

起始

先要引入qk-json,并生成一个json数据

const index = require("qk-json");
let json = [{ "id": 0, "name": "aaa" },{ "id": 1, "name": "bbb" },{ "id": 2, "name": "ccc" },{ "id": 3, "name": "ddd" },{ "id": 4, "name": "eee" },{ "id": 5, "name": "fff" },{ "id": 6, "name": "ggg" },{ "id": 7, "name": "hhh" },{ "id": 8, "name": "iii" },{ "id": 9, "name": "jjj" }
];

get

获取值

代码

let main = new index(json);
console.log(main.get());
console.log(main.get(3));

运行效果

[{ "id": 0, "name": "aaa" },{ "id": 1, "name": "bbb" },{ "id": 2, "name": "ccc" },{ "id": 3, "name": "ddd" },{ "id": 4, "name": "eee" },{ "id": 5, "name": "fff" },{ "id": 6, "name": "ggg" },{ "id": 7, "name": "hhh" },{ "id": 8, "name": "iii" },{ "id": 9, "name": "jjj" }
]
[{ "id": 0, "name": "aaa" },{ "id": 1, "name": "bbb" },{ "id": 2, "name": "ccc" }
]

set

设置JSON数组值

代码

let main = new index();
console.log(main.get()); // []
main.set(json);
console.log(main.get());
main.set(JSON.stringify(json));
console.log(main.get());
main.set("test.json");
console.log(main.get());

运行效果

[]
[{ "id": 0, "name": "aaa" },{ "id": 1, "name": "bbb" },{ "id": 2, "name": "ccc" },{ "id": 3, "name": "ddd" },{ "id": 4, "name": "eee" },{ "id": 5, "name": "fff" },{ "id": 6, "name": "ggg" },{ "id": 7, "name": "hhh" },{ "id": 8, "name": "iii" },{ "id": 9, "name": "jjj" }
]
[{ "id": 0, "name": "aaa" },{ "id": 1, "name": "bbb" },{ "id": 2, "name": "ccc" },{ "id": 3, "name": "ddd" },{ "id": 4, "name": "eee" },{ "id": 5, "name": "fff" },{ "id": 6, "name": "ggg" },{ "id": 7, "name": "hhh" },{ "id": 8, "name": "iii" },{ "id": 9, "name": "jjj" }
]
[{"id": 1,"first_name": "Jeanette","last_name": "Penddreth","email": "jpenddreth0@census.gov","gender": "Female","ip_address": "26.58.193.2","children": [ {"id": 1,"first_name": "a","last_name": "a","email": "a@census.gov","gender": "Female"},{"id": 2,"first_name": "b","last_name": "b","email": "b@census.gov","gender": "Female"}]},{"id": 2,"first_name": "Giavani","last_name": "Frediani","email": "gfrediani1@senate.gov","gender": "Male","ip_address": "229.179.4.212"},{"id": 3,"first_name": "Noell","last_name": "Bea","email": "nbea2@imageshack.us","gender": "Female","ip_address": "180.66.162.255"},{"id": 4,"first_name": "Willard","last_name": "Valek","email": "wvalek3@vk.com","gender": "Male","ip_address": "67.76.188.26"}
]

first

获取第一个值

代码

let main = new index(json);
console.log(main.first());

运行效果

{ "id": 0, "name": "aaa" }

last

获取最后一个值

代码

let main = new index(json);
console.log(main.last());

运行效果

{ "id": 9, "name": "jjj" }

pagination

分页

代码

let main = new index(json);
console.log(main.pagination(2, 3).get());

运行效果

[{ "id": 6, "name": "ggg" },{ "id": 7, "name": "hhh" },{ "id": 8, "name": "iii" }
]

limit

限制查询

代码

let main = new index(json);
console.log(main.limit(0, 2).get());

运行效果

[ { "id": 0, "name": "aaa" }, { "id": 1, "name": "bbb" } ]

whereAll

查询

代码

let main = new index(json);
console.log(main.whereAll([["name", "bbb"], ["id", "<", 2]]).get());

运行效果

[ { "id": 1, "name": "bbb" } ]

where

查询

代码

let main = new index(json);
console.log(main.where("id", 1).get());
main.clear(); // 清除掉where缓存
console.log(main.where("id", "<", 2).get());
main.clear();
console.log(main.where((item) => item.id > 6).get());

运行效果

[ { "id": 1, "name": "bbb" } ]
[ { "id": 0, "name": "aaa" }, { "id": 1, "name": "bbb" } ]
[{ "id": 7, "name": "hhh" },{ "id": 8, "name": "iii" },{ "id": 9, "name": "jjj" }
]

whereD

查询,默认为==

代码

let main = new index(json);
console.log(main.where("id", 1).get());

运行效果

[ { "id": 1, "name": "bbb" } ]

whereS

查询

代码

let main = new index(json);
console.log(main.where("id", "<", 2).get());

运行效果

[ { "id": 0, "name": "aaa" }, { "id": 1, "name": "bbb" } ]

whereC

查询,回调

代码

let main = new index(json);
console.log(main.where((item) => item.id > 6).get());

运行效果

[{ "id": 7, "name": "hhh" },{ "id": 8, "name": "iii" },{ "id": 9, "name": "jjj" }
]

select

查询单个键名

代码

let main = new index(json);
console.log(main.where("id", 2).select("name").get());

运行效果

ccc

eq

查询指定下标

代码

let main = new index(json);
console.log(main.where("id", "<", 2).eq(1).get());

运行效果

{ "id": 1, "name": "bbb" }

insert

插入数据

代码

let main = new index(json);
main.insert({ "id": 10, "name": "kkk" });
console.log(main.where("id", ">", 8).get());

运行效果

[ { "id": 9, "name": "jjj" }, { "id": 10, "name": "kkk" } ]

insertKey

插入键名

代码

let main = new index(json);
main.insertKey("age", 10);
console.log(main.first());

运行效果

{ "id": 0, "name": "aaa", "age": 10 }

update

修改数据

代码

let main = new index(json);
main.where("id", 1).update("name", "lll");
console.log(main.where("id", 1).get());

运行效果

[ { "id": 1, "name": "lll" } ]

delete

删除数据

代码

let main = new index(json);
let temp = main.where("id", 1).delete();
console.log(temp);

运行效果

[{ "id": 0, "name": "aaa" },{ "id": 2, "name": "ccc" },{ "id": 3, "name": "ddd" },{ "id": 4, "name": "eee" },{ "id": 5, "name": "fff" },{ "id": 6, "name": "ggg" },{ "id": 7, "name": "hhh" },{ "id": 8, "name": "iii" },{ "id": 9, "name": "jjj" }
]

deleteKey

删除键名

代码

let main = new index(json);
main.deleteKey("name");
console.log(main.first());

运行效果

{ "id": 0 }

equal

判断两个json是否相等

代码

let main = new index(json);
let json1 = { "id": 1, "name": "a", "children": [1, 2] };
let json2 = { "id": 1, "name": "a", "children": [1, 2] };
console.log(main.equal(json1, json2));

运行效果

true

orderBy

排序

代码

let main = new index(json);
console.log(main.where("id", "<", 2).orderBy(["name"], "desc").get());

运行效果

[ { "id": 1, "name": "bbb" }, { "id": 0, "name": "aaa" } ]

expor

node导出

代码

let main = new index(json);
main.export("demo");

运行效果

在本地文件夹中创建demo.json文件

unRepeat

去重

代码

let repeats = [{ "id": 1, "name": "a" }, { "id": 2, "name": "b" }, { "id": 1, "name": "a" }];
let main = new index();
console.log(main.unRepeat(repeats, "id"));

运行效果

[ { "id": 1, "name": "a" }, { "id": 2, "name": "b" } ]

连表

初始数据

let student = [{ "学号": 1001, "姓名": "FF", "性别": "女", "籍贯": "山东", "年龄": 18, "成绩级别": "A", "联系电话": 15112, "测试": 1 },{ "学号": 1002, "姓名": "NN", "性别": "女", "籍贯": "河南", "年龄": 19, "成绩级别": "C", "联系电话": 15212, "测试": 2 },{ "学号": 1003, "姓名": "ZZ", "性别": "男", "籍贯": "河南", "年龄": 17, "成绩级别": "B", "联系电话": 15312, "测试": 1 },{ "学号": 1004, "姓名": "JJ", "性别": "男", "籍贯": "湖南", "年龄": 19, "成绩级别": "A", "联系电话": 15412, "测试": 3 },{ "学号": 1005, "姓名": "AA", "性别": "男", "籍贯": "湖南", "年龄": 17, "成绩级别": "B", "联系电话": 15512, "测试": 4 },{ "学号": 1006, "姓名": "HH", "性别": "女", "籍贯": "山东", "年龄": 18, "成绩级别": "B", "联系电话": 15612, "测试": 7 },{ "学号": 1007, "姓名": "YY", "性别": "男", "籍贯": "河南", "年龄": 19, "成绩级别": "A", "联系电话": 15712, "测试": 1 },{ "学号": 1008, "姓名": "KK", "性别": "女", "籍贯": "河南", "年龄": 17, "成绩级别": "C", "联系电话": 15812, "测试": 8 }
];let classes = [{ "学号": 1001, "专业": "计算机", "班级": "计191", "测试": 1 },{ "学号": 1002, "专业": "会计", "班级": "会计191", "测试": 2 },{ "学号": 1003, "专业": "计算机", "班级": "计192", "测试": 3 },{ "学号": 1004, "专业": "英语", "班级": "英语182", "测试": 4 },{ "学号": 1006, "专业": "土木工程", "班级": "土木201", "测试": 6 },{ "学号": 1007, "专业": "软件工程", "班级": "软件221", "测试": 7 },{ "学号": 1009, "专业": "软件工程", "班级": "软件222", "测试": 8 }
];

innerJoin

内连接

代码
let main = new index(student);
main.innerJoin(classes, ["学号", "测试"]);
console.log(main.get());
运行效果
[{"学号": 1001,"姓名": "FF","性别": "女","籍贯": "山东","年龄": 18,"成绩级别": "A","联系电话": 15112,"测试": 1,"专业": "计算机","班级": "计191"},{"学号": 1002,"姓名": "NN","性别": "女","籍贯": "河南","年龄": 19,"成绩级别": "C","联系电话": 15212,"测试": 2,"专业": "会计","班级": "会计191"}
]

leftJoin

左连接

代码
let main = new index(student);
main.leftJoin(classes, "学号");
console.log(main.get());
运行效果
[{"学号": 1001,"姓名": "FF","性别": "女","籍贯": "山东","年龄": 18,"成绩级别": "A","联系电话": 15112,"测试": 1,"专业": "计算机","班级": "计191"},{"学号": 1002,"姓名": "NN","性别": "女","籍贯": "河南","年龄": 19,"成绩级别": "C","联系电话": 15212,"测试": 2,"专业": "会计","班级": "会计191"},{"学号": 1003,"姓名": "ZZ","性别": "男","籍贯": "河南","年龄": 17,"成绩级别": "B","联系电话": 15312,"测试": 1,"专业": "计算机","班级": "计192"},{"学号": 1004,"姓名": "JJ","性别": "男","籍贯": "湖南","年龄": 19,"成绩级别": "A","联系电话": 15412,"测试": 3,"专业": "英语","班级": "英语182"},{"学号": 1005,"姓名": "AA","性别": "男","籍贯": "湖南","年龄": 17,"成绩级别": "B","联系电话": 15512,"测试": 4,"专业": null,"班级": null},{"学号": 1006,"姓名": "HH","性别": "女","籍贯": "山东","年龄": 18,"成绩级别": "B","联系电话": 15612,"测试": 7,"专业": "土木工程","班级": "土木201"},{"学号": 1007,"姓名": "YY","性别": "男","籍贯": "河南","年龄": 19,"成绩级别": "A","联系电话": 15712,"测试": 1,"专业": "软件工程","班级": "软件221"},{"学号": 1008,"姓名": "KK","性别": "女","籍贯": "河南","年龄": 17,"成绩级别": "C","联系电话": 15812,"测试": 8,"专业": null,"班级": null}
]

rightJoin

右连接

代码
let main = new index(student);
main.rightJoin(classes, "学号");
console.log(main.get());
运行效果
[{"学号": 1001,"姓名": "FF","性别": "女","籍贯": "山东","年龄": 18,"成绩级别": "A","联系电话": 15112,"测试": 1,"专业": "计算机","班级": "计191"},{"学号": 1002,"姓名": "NN","性别": "女","籍贯": "河南","年龄": 19,"成绩级别": "C","联系电话": 15212,"测试": 2,"专业": "会计","班级": "会计191"},{"学号": 1003,"姓名": "ZZ","性别": "男","籍贯": "河南","年龄": 17,"成绩级别": "B","联系电话": 15312,"测试": 3,"专业": "计算机","班级": "计192"},{"学号": 1004,"姓名": "JJ","性别": "男","籍贯": "湖南","年龄": 19,"成绩级别": "A","联系电话": 15412,"测试": 4,"专业": "英语","班级": "英语182"},{"学号": 1006,"姓名": "HH","性别": "女","籍贯": "山东","年龄": 18,"成绩级别": "B","联系电话": 15612,"测试": 6,"专业": "土木工程","班级": "土木201"},{"学号": 1007,"姓名": "YY","性别": "男","籍贯": "河南","年龄": 19,"成绩级别": "A","联系电话": 15712,"测试": 7,"专业": "软件工程","班级": "软件221"},{"学号": 1009,"姓名": null,"性别": null,"籍贯": null,"年龄": null,"成绩级别": null,"联系电话": null,"测试": 8,"专业": "软件工程","班级": "软件222"}
]

fullJoin

完全连接

代码
let main = new index(student);
main.fullJoin(classes, "学号");
console.log(main.get());
运行效果
[{"学号": 1001,"姓名": "FF","性别": "女","籍贯": "山东","年龄": 18,"成绩级别": "A","联系电话": 15112,"测试": 1,"专业": "计算机","班级": "计191"},{"学号": 1002,"姓名": "NN","性别": "女","籍贯": "河南","年龄": 19,"成绩级别": "C","联系电话": 15212,"测试": 2,"专业": "会计","班级": "会计191"},{"学号": 1003,"姓名": "ZZ","性别": "男","籍贯": "河南","年龄": 17,"成绩级别": "B","联系电话": 15312,"测试": 1,"专业": "计算机","班级": "计192"},{"学号": 1004,"姓名": "JJ","性别": "男","籍贯": "湖南","年龄": 19,"成绩级别": "A","联系电话": 15412,"测试": 3,"专业": "英语","班级": "英语182"},{"学号": 1005,"姓名": "AA","性别": "男","籍贯": "湖南","年龄": 17,"成绩级别": "B","联系电话": 15512,"测试": 4,"专业": null,"班级": null},{"学号": 1006,"姓名": "HH","性别": "女","籍贯": "山东","年龄": 18,"成绩级别": "B","联系电话": 15612,"测试": 7,"专业": "土木工程","班级": "土木201"},{"学号": 1007,"姓名": "YY","性别": "男","籍贯": "河南","年龄": 19,"成绩级别": "A","联系电话": 15712,"测试": 1,"专业": "软件工程","班级": "软件221"},{"学号": 1008,"姓名": "KK","性别": "女","籍贯": "河南","年龄": 17,"成绩级别": "C","联系电话": 15812,"测试": 8,"专业": null,"班级": null},{"学号": 1009,"姓名": null,"性别": null,"籍贯": null,"年龄": null,"成绩级别": null,"联系电话": null,"测试": 8,"专业": "软件工程","班级": "软件222"}
]

整合

  • 使用test.json文件进行
  • 新增一条数据
  • 都添加一个age字段,默认值为10
  • 在"id"大于2中的age字段设置为18
  • 在"id"为1里的children子元素
    • 删除"gender"的字段名
    • 删除"id"为2的数据
  • 最后的数据导出为main.json数据

代码

let main = new index("test.json");
main.insert({"id": 5,"first_name": "asdf","last_name": "asdf","email": "asdf@vk.com","gender": "asdf","ip_address": "67.76.188.236"
}).insertKey("age", 10).where("id", ">", 2).update("age", 18).clear();
main.where("id", 1).select("children").deleteKey("gender").where("id", 2).delete();
main.export("main");
main.clear();
console.dir(main.get(), { depth: null });
main.close();

运行效果

[{"id": 1,"first_name": "Jeanette","last_name": "Penddreth","email": "jpenddreth0@census.gov","gender": "Female","ip_address": "26.58.193.2","children": [{"id": 1,"first_name": "a","last_name": "a","email": "a@census.gov"}],"age": 10},{"id": 2,"first_name": "Giavani","last_name": "Frediani","email": "gfrediani1@senate.gov","gender": "Male","ip_address": "229.179.4.212","age": 10},{"id": 3,"first_name": "Noell","last_name": "Bea","email": "nbea2@imageshack.us","gender": "Female","ip_address": "180.66.162.255","age": 18},{"id": 4,"first_name": "Willard","last_name": "Valek","email": "wvalek3@vk.com","gender": "Male","ip_address": "67.76.188.26","age": 18},{"id": 5,"first_name": "asdf","last_name": "asdf","email": "asdf@vk.com","gender": "asdf","ip_address": "67.76.188.236","age": 18}
]

如有问题可以在评论区提出!

js json操作,qk-json相关推荐

  1. Qt中的JSON操作_1: JSON的基本知识介绍(JSON格式、JSON数组、JSON对象、应用场景)

    总结放于前: JSON是一种利用JSON数组和JSON对象描述数据内容的数据格式,采用树状的结构,只能有一个父节点,子节点不设限,但父子节点均为JSON对象或者JSON数组. 1. Json 简介 J ...

  2. json.js+ jquery 操作笔记

    json.js+ jquery 操作笔记 json.js下载地址: http://www.json.org/js.html 我初学JSON,按照官方说明,在json2.js中有parse和string ...

  3. python json数据格式数组内元素递增赋值_python深浅复制,类型转换, json操作,数组操作...

    python深浅复制 import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷 ...

  4. js之操作JSON数据

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...

  5. js与java对json的操作

    JSON呢,是现在大部分,并且主流的传递数据的方式. 今天讲一下javascript的java对json的操作 提到js,当下就有一个比较主流的插件,vue.js,这个插件程序员没用过也都听说过吧, ...

  6. JS:两个json数组合并、去重,以及删除某一项元素

    两个json数组合并去重,以及删除某一项元素 let ha = [{id:'H',name:'3'},{id:'A',name:'6'},{id:'B',name:'14'},{id:'C',name ...

  7. 转js 将json字符串转换为json对象的方法解析

    将json字符串转换为json对象的方法.在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键 我的解决思路是: ...

  8. js使用eval解析json(js中使用json)

    eval的用法eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句,下面给出eval解析json的示例 先来说eval的用法,内容比较简单,熟悉的可以跳过 eval函数接收一个参 ...

  9. java代码里的JSON格式怎么写好看_python3 循环读取excel文件并写入json操作

    文件内容: excel内容: 代码: import xlrdimport jsonimport operatordef read_xlsx(filename): # 打开excel文件 data1 = ...

最新文章

  1. php网站安全狗绕过,最新安全狗绕过姿势 - Azeng呐的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. 程序员,请不要抢系统管理员的饭碗
  3. TCGA免疫浸润评价数据库,TIMER 2.0 使用指南
  4. 中科罗伯特工业机器人_「聚焦中日韩产业博览会」丈夫看机器人,妻子忙采购...
  5. 【数据结构】图的深度优先搜索
  6. php cgi模块,PHP5模块和CGI
  7. C++:传递数组给函数
  8. JMS 基本概念、消息结构、确认模式 acknowledgeMode
  9. 邮政社招笔试题库_中国邮政招聘笔试:笔试练习题1
  10. BLDC无刷直流电机的原理及驱动基础
  11. 如何在手机上查银行卡号?进来手把手教你!
  12. 算法提高 盾神与条状项链
  13. 设计求二叉树高度的算法
  14. 上午卷-1.计算机组成与结构-软件设计师
  15. MapReduce剥洋葱
  16. Web设计中最常用的10种色调以及示例演示
  17. c语言如何将字符串中的数字提取出来,从含有数字的文本字符串中提取出数字...
  18. Python深度学习与机器视觉(一)
  19. python爬虫(1)-百度新闻首页抓取
  20. python设置折线图标题字体为宋体_python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)...

热门文章

  1. 企业应用快速开发平台
  2. 外贸知识通俗教程(中)
  3. 读取Excel内容生成PNG图片
  4. goahead的asp和jst
  5. Android 应用详情查看
  6. 免费分享下载最新全国省市区县和乡镇街道行政区划矢量边界坐标经纬度地图数据 shp geojson json sql格式
  7. python炒股模块_Python数据分析-numpy模块、pandas模块.基本操作、股票案例
  8. 人力资源数据可视化技术架构
  9. CSTrackV2(SiamTracker):One More Check:Making “Fake Background” Be Tracked Again
  10. 哪家建站系统的模板比较好?