Socket
Socket
Sign inDemoInstall

jsonqueryjs

Package Overview
Dependencies
0
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    jsonqueryjs

支持对象数据(json/array)数据的查找及格式化数据


Version published
Weekly downloads
30
increased by1400%
Maintainers
1
Install size
67.4 kB
Created
Weekly downloads
 

Readme

Source

jsonQuery.js

版本更新记录

2.0.0 整体设计模式进行更改
2.0.1 添加formatIndex方法,为数组添加广度/深度索引值
2.0.2 closest方法返回值类型更改 arr->object
2.0.3 jsonQuery.toolUtil更名为jsonQuery.tool;jsonQuery.tool增加getValueWithKey方法
2.0.4 change some docs

使用说明

commonJs使用:import jsonQuery from 'jsonqueryjs/jsonQuery'
amd/cmd使用: define(['jsonqueryjs/jsonQuery'], function(jsonQuery) {} );
script引用:<script src='node_modules/jsonqueryjs/jsonQuery.js'></script>

数据初始化(后续操作前提)

  • 基本概念描述
  • jsonQuery:数据源绑定
  • target:目标源设定

对象数据查询相关方法

对象数据操作相关方法

其他工具方法

基本概念描述

rule(规则),此处规则分为3类
规则一:"'a'='1'"
       "'a'='1'" = (key="a" & value="1")  a和1都被标记为字符串,此时解释为查询规则为

规则二:"'a'=1" / "0=1"
       "'a'=1" = (key='a' & value=1)
       "0=1"   = (key=0 & value=1) 此时说明是针对数组下标为0值为1的查询条件   

规则三:"=1" / "'a'="
       "=1" = (key= & value=1) 此时会忽略key值判断,不论是数组还是json对象,只要value=1都被认定为符合条件


modeType(匹配模式),此处分为2类

模式一:'contain'(常用)
      包含模式 如数据{"a":3},如果rule='"a"=3',则认为查找的对象为{"a":3},通过后续api,你会更好的理解
模式二:'strict'
      严格匹配模式

数据初始化

jsonQuery(data)

描述:数据源绑定
实例:
     var data = {a: 1, b: {a: 10, b: 11, c: 12, d: 13}};
     var jsonInstance = jsonQuery(data);

target(rule)

描述:目标源设定
实例:
     var data = {a: 1, b: {a: 10, b: 11, c: 12, d: 13}};
     var jsonInstance = jsonQuery(data).target('"c"=12');

对象数据查询相关方法

find()

描述:节点查询
实例:
     var data = {a: 1, b: {a: 10, b: 11, c: 12, d: 13}};
     var result = jsonQuery(data).target('"c"=12').find().val();
     console.log(result) => 结果:{a: 10, b: 11, c: 12, d: 13}

parents()

描述:父节点查询
实例:
     var data = {a: 1, b: {a: 10, b: 11, c: 12, d: 13}};
     var result = jsonQuery(data).target('"c"=12').parents().val();
     console.log(result) => 结果:[{a: 1, b: {a: 10, b: 11, c: 12, d: 13}, {a: 10, b: 11, c: 12, d: 13}]

closest(options)

描述:查找最近的复合指定条件的祖先元素
参数:options = {key: 'testKey', value: 'testValue'} > 即为查找祖先元素中存在条件(a:1) 的父元素
实例:
     var data = {a: 1, b: {a: 10, b: 11, c: 12, d: 13}};
     ---实例一---
     var result = jsonQuery(data).target('"c"=12').closest({key: 'a', value: 1}).val();
     console.log(result) => 结果:{a: 1, b: {a: 10, b: 11, c: 12, d: 13}}
     ---实例二---
     var result = jsonQuery(data).target('"c"=12').closest({key: 'a', value: 10}).val();
     console.log(result) => 结果:{a: 10, b: 11, c: 12, d: 13}

siblings([modeType], [queryType])

描述:兄弟节点查询
参数:modeType 'strict' | 'contain' 两种查找匹配模式选择
     queryType 'all' | 'before' | 'after' | 'beforeAll' | 'afterAll' 兄弟节点查找的类型
实例:
     var data = {a: 1, b: {a: 10, b: 11, c: 12, d: 13}};
     ---实例一---
     var result = jsonQuery(data).target('"c"=12').siblings('strict', 'all').val();
     console.log(result) => 结果:[10, 11, 13]
     ---实例二---
     var result = jsonQuery(data).target('"c"=12').siblings('strict', 'before').val();
     console.log(result) => 结果:[11]
     ---实例三---
     var result = jsonQuery(data).target('"c"=12').siblings('strict', 'beforeAll').val();
     console.log(result) => 结果:[10, 11]
     ---实例四---
     var result = jsonQuery(data).target('"c"=12').siblings('contain', 'all').val();
     console.log(result) => 结果:[1]

对象数据操作相关方法

insert(options, [modeType], [insertType])

描述:节点插入
参数:options = {key: 'testKey', value: 'testValue'} > 即插入的目标数据
     modeType 'strict' | 'contain' 两种查找匹配模式选择
     insertType 'before' | 'after' 插入的节点位置
实例:
     var data = {a: 1, b: {a: 10, b: 11, c: 12, d: 13}};
     ---实例一---
     var result = jsonQuery(data).target('"c"=12').insert({key: 'testKey', value: 'testValue'}, 'strict', 'before').val();
     console.log(result) => 结果:{a: 1, b: {a: 10, b: 11, testKey: 'testValue', c: 12, d: 13}}
     ---实例二---
     var result = jsonQuery(data).target('"c"=12').insert({key: 'testKey', value: 'testValue'}, 'contain', 'before').val();
     console.log(result) => 结果:{a: 1, testKey: 'testValue', b: {a: 10, b: 11, c: 12, d: 13}}

delete([modeType])

描述:节点删除
参数:modeType 'strict' | 'contain' 两种查找匹配模式选择
实例:
     var data = {a: 1, b: {a: 10, b: 11, c: 12, d: 13}};
     ---实例一---
     var result = jsonQuery(data).target('"c"=12').delete('strict').val();
     console.log(result) => 结果:{a: 1, b: {a: 10, b: 11, d: 13}}
     ---实例二---
     var result = jsonQuery(data).target('"c"=12').delete('contain').val();
     console.log(result) => 结果:{a: 1}

deleteSiblings([modeType], [deleteType])

描述:相关兄弟节点删除
参数:modeType 'strict' | 'contain' 两种查找匹配模式选择
     deleteType 'all' | 'beforeAll' | 'afterAll' 删除指定位置的兄弟节点
实例:
     var data = {a: 1, b: {a: 10, b: 11, c: 12, d: 13}};
     ---实例一---
     var result = jsonQuery(data).target('"c"=12').deleteSiblings('strict', 'beforeAll').val();
     console.log(result) => 结果:{a: 1, b: {c: 12, d: 13}}
     ---实例二---
     var result = jsonQuery(data).target('"c"=12').deleteSiblings('contain', 'beforeAll').val();
     console.log(result) => 结果:{b: {a: 10, b: 11, c: 12, d: 13}}

replace(options, [modeType])

描述:节点替换
参数:options = {key: 'testKey', value: 'testValue'} > 即插入的目标数据
     modeType 'strict' | 'contain' 两种查找匹配模式选择
实例:
     var data = {a: 1, b: {a: 10, b: 11, c: 12, d: 13}};
     ---实例一---
     var result = jsonQuery(data).target('"c"=12').replace({key: 'testKey', value: 'testValue'}, 'strict').val();
     console.log(result) => 结果:{a: 1, b: {a: 10, b: 11, testKey: 'testValue', d: 13}}
     ---实例二---
     var result = jsonQuery(data).target('"c"=12').replace({key: 'testKey', value: 'testValue'}, 'contain').val();
     console.log(result) => 结果:{a: 1, testKey: 'testValue'}

其他工具方法

isJson(data)

描述:json对象判断
实例:
    var result = jsonQuery.tool.isJson({a: 1});
    console.log(result) => 结果:true

isArray(data)

描述:array对象判断
实例:
    var result = jsonQuery.tool.isArray([1]);
    console.log(result) => 结果:true

isInArray(arr, target)

描述:判断是否位于数组中
实例:
    var result = jsonQuery.tool.isInArray([1], 1);
    console.log(result) => 结果:true  

getJsonArrLength(data)

描述:获取对象长度
实例:
    var result = jsonQuery.tool.getJsonArrLength([1]);
    console.log(result) => 1  

deepCopy(data)

描述:对象深度拷贝
实例:
    var result = jsonQuery.tool.deepCopy([1, {a: 1}]);
    console.log(result) => 结果:[1, {a: 1}]  

formatIndex(options, yIndex)

描述:为数组添加广度/深度索引值
参数:options = {data: [a:1], xKey: 'xKey', yKey: 'yKey' }
     options.data: 格式化数据
     options.xKey: 广度索引key值
     options.yKey: 深度索引key值
     yIndex: 深度起始索引,一般为0,固定为0
实例:
     var result = jsonQuery.tool.formatIndex({data: [{a: 'a', childs: [{a: 'a'}]}]}, 0);
     console.log(result) => [{a: 'a', xIndex: 0, yIndex: 0, childs: [{a: 'a', xIndex: 0, yIndex: 1}]}]
    

getValueWithKey(options)

描述:根据key值进行对应value匹配查找
参数:options = {data: {a:1}, key: 'a' }
     options.data: 数据源
     options.key: 匹配value对应的查找key值(如果是数组,则直接传数组下标index即可)
实例:
     var result = jsonQuery.tool.getValueWithKey({data: {a:1}, key: 'a' });
     console.log(result) => [1]
    

compare(data1, data2)

描述:两组数据比较,对象不进行地址比较
实例:
    var result = jsonQuery.tool.compare([1, {a: 1}], [1, {a: 1}]);
    console.log(result) => 结果:true  

logInfo(type, info)

描述:日志信息控制台输出
实例:
    jsonQuery.tool.logInfo('error', 'msg error');

Keywords

FAQs

Last updated on 02 Jul 2018

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc