quick.json
Json 方法
quick.json 使用
// 方法名
export {
test,
isNull,
isString,
toString,
toFrom,
toValue,
toUrl,
toStyle,
fromUrl,
fromStyle,
from,
find,
findAll,
copy,
bind,
map,
makeTree,
makeFormat,
parseOne,
};
// 项目引入
import { json } from 'quick.lib';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
- 在线测试
>{}
let val = { d: 1, time: new Date() };
let arr = [
{ d: 2 },
{
tip: 'as',
data: [{ time: new Date() }, { arr: [1, 2, 3, 4] }],
},
];
let obj = {
//是否为json对象非json数组
test: json.test(val),
nullJson: json.isNull({}),
nullArr: json.isNull([]),
isString: json.isString(`[{"d":1}]`),
toString: json.toString(arr),
toUrl: json.toUrl(val),
};
obj.json = json.fromUrl(obj.toUrl);
return obj;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
test
验证是 json 对象
/**
* 判断是否为json对象非json数组
* @param {*} obj 初始对象
*/
json.test(obj);
1
2
3
4
5
2
3
4
5
isNull
判断内容子项是否为空
/**
* 判断Json内容是否为空
* @param {*} json 对象
*/
json.isNull(json);
1
2
3
4
5
2
3
4
5
isString
判断标准 json 字符串
/**
* 判断标准json字符串
* @param {*} string Json 双引号字符串
* JSON.parse
*/
json.isString(string);
1
2
3
4
5
6
2
3
4
5
6
toString
Json 转字符串
/**
* 转换为字符串
* @param {*} o
* @param {*} callback 回调处理
* @param {*} opts 附加参数:制表符 \t
* JSON.stringify
*/
json.toString(o, callback, opts);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
toFrom
json 对象转字符串
>{}
/**
* 对象转字符串
* @param {*} o json
* @param {*} callback 回调处理(k,v,index)
*/
// const toFrom = (o, callback);
let _json = {
name: 'mariya',
age: 17,
};
return {
toFrom: json.toFrom(_json, function (key, value, index) {
let _mark = '';
if (index > 0) {
// 加上分割符号
_mark += '&';
}
return _mark + key + '=' + json.toValue(value);
}),
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
toValue
json 值转换输出
>{}
/**
* json 子值转换输出
* @param {*} val 值
* @param {*} type 指定类型,默认为空getType(val)
*/
// const toValue = (val, type)
let _json = {
name: 'lee',
age: 18,
};
return 'name=' + json.toValue(_json.name) + '&age=' + json.toValue(_json.age);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
toStyle
json 转 style 样式
>{}
/**
* 转为style 样式
* @param {*} o
*/
return json.toStyle({
color: 'red',
'font-size': '14px',
});
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
toUrl
Json 转换为 URL 参数
/**
* 将Json对象转换为URL参数
* @param {*} object 初始json对象
* @param {*} isEncoded 是否转码 encodeURIComponent
* 返回 key=val&key2=val2
*/
json.toUrl(object, isEncoded){};
1
2
3
4
5
6
7
2
3
4
5
6
7
fromUrl
url 参数格式转为 json
>{}
/**
* 将url参数格式转为json
* @param {*} str 需格式的str
* url格式如:?1=默认&2=网关&3=光纤
* 返回 json.from(str,/([^?&]+)=([^?&]+)/g)
*/
// const fromUrl = str => {
// return from(str, /([^?&]+)=([^?&]+)/g);
// };
let _param = 'key=1&page=/home/index';
return json.fromUrl(_param);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
fromStyle
样式字符串转为 json
>{}
/**
* 将样式转为json
* @param {*} str 样式字符串
* 返回 json.from(str,/([^;]+):([^;]+);/g)
*/
// const fromStyle = str => {
// return from(str, /([^;]+):([^;]+);/g);
// };
let _styled = 'color:red;font-size:22px;';
return json.fromStyle(_styled);
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
from
字符串正则转为 json
>{}
/**
* 字符串正则转为json
* @param {string} str 初始字符串
* @param {*} param 自定义正则
* @param {*} isEncoded 默认不转码 encodeURIComponent
*/
// const from = (str, param = /([^?&]+)=([^?&]+)/g, isEncoded = false)
let str = '?key=1&page=/home/index';
// 数据库选项定义参数格式转为 json
let _ls = '0:初始, 1:正常, 2:已审, 3:撤审,4:删除';
// 布尔值转为json
let _bool = 'false:否,true:是';
let _json = 'false: "否1", true: "是2"';
return {
url: json.from(str),
ls: json.from(_ls, /([^?,]+):([^?,]+)/g),
bool: json.from(_bool, /([^?,]+):([^?,]+)/g),
obj: json.from(_json, /([^?,]+):([^?,]+)/g),
int: _ls.replace(/[^0-9.]/g, ''), //正则替换数字和小数点以外的
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
find
Json 数组查找对象
异步查找 Json 数组并且回调,默认返回第一条
>{}
let data = [
{ d: 1, k: 'ac' },
{
d: 2,
k: 'us',
},
{
d: 3,
k: 'us',
list: [
{ id: 8, name: 'dd' },
{
id: 9,
name: 'dd',
list: [
{ id: 18, name: 'dd' },
{ id: 29, name: 'dd' },
],
},
],
},
{ d: 4, k: 'ac' },
];
/**
* 异步查找Json数组并且回调,默认返回第一条
* @param {*} option 查找条件
* {data:查找数组,where:查找的条件,subs:查找子项关键字,where,callback}
* where:'data.ID===9 && data.Title==="abc"'
* callback(对象,level:层次,序号){ //return -1;取出全部}
*/
return json.find({
// 数据源
data,
// 搜索子项节点
subs: 'list',
// 查询条件
where: ' data.id==18&& data.name=="dd" ',
//异步回调(对象,level:层次,序号)
callback: function (obj, level, index) {
console.log('k:' + level, index, JSON.stringify(obj));
if (obj) {
// 找到对象
alert('k:' + level + ';' + JSON.stringify(obj));
/** 设置返回值等于 -1 会继续查询直到数据全部搜索完毕 */
//return -1; 取出全部
} else {
// 全部搜索完毕,未找到对象
}
},
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
findAll
Json 异步搜索返回数组
>{}
let data = [
{
d: 2,
k: 'us',
list: [
{
id: 24,
name: 'dd',
list: [
{ id: 77, name: 'dd' },
{
id: 78,
name: 'dd',
list: [
{ id: 88, name: 'dd' },
{ id: 89, name: 'dd' },
],
},
],
},
{ id: 56, name: 'dd' },
],
},
{ d: 4, k: 'ac' },
];
/**
* 异步查找Json数组并且回调,取出全部,并返回层次与序号
* @param {*} option 查找条件
* {data:查找数组,where:查找的条件,subs:查找子项关键字,where,callback}
* where:'data.ID===9 && data.Title==="abc"'
* callback([对象数组],[level:层次,index:序号]){}
*/
return json.findAll({
data,
subs: 'list',
where: 'data.name=="dd"',
// 异步回调([找到的对象数组],[level:层次,index:序号])
callback: function (list, pars) {
console.log('ls:', pars, JSON.stringify(list));
alert('ls:' + JSON.stringify(list));
},
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
copy
深度拷贝
/**
* 深度拷贝 DeepCopy
* @param {*} json 初始值
* 返回新内存对象
*/
json.copy(json);
1
2
3
4
5
6
2
3
4
5
6
bind
Json 数据绑定模板
>{}
let _json = { id: 9, name: 'a', title: 'b', list: [{ id: 1 }, { id: 2 }] };
let _template = '<ul><li>{id}</li><li>{name}</li></ul>';
/**
* 模板与Json 数据绑定
* @param {*} json 绑定的数据{user,name}
* @param {*} template 绑定的模板 <ul><li>{user}</li><li>{name}</li></ul>
*/
return json.bind(_json, _template);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
map
对象转换为数组
>{}
let _json = { id: 9, name: 'a', title: 'b', list: [{ id: 1 }, { id: 2 }] };
/**
* 对象转换为数组
* @param {*} json json对象
* @param {*} callback 回调处理方法(val,key,json)
*/
let obj = json.map(_json, function (val, key, json) {
let _item = { id: json.id };
_item[key] = val;
return _item;
});
return JSON.stringify(obj);
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
makeTree
Json 树结构显示
>{}
let _json = { id: 9, name: 'a', title: 'b', list: [{ id: 1 }, { id: 2 }] };
/**
* 转为Json树结构
* @param {*} json 对象
* 返回 map数组
*/
let obj = json.makeTree(json);
return JSON.stringify(obj);
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
makeFormat
格式化显示
>{}
let _json = { id: 9, name: 'a', title: 'b', list: [{ id: 1 }, { id: 2 }] };
// JSON.stringify(_json, null, 2);
/**
* json格式化换行显示
* @param {string,object} value json文本内容支持非标
* @param {*} space 缩进的数量,默认2
*/
return json.makeFormat(_json, 4);
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
parseOne
双引号与非标单引号字符串转为 json
>{}
let _str = `{
'id': 9,
'name': "a",
"title": "b",
"list": [{"id":1},{"id":2}]
}
`;
/**
* 转换双引号与非标 单引号字符串
* @param {string} json
* 返回 bll.parse(str)
*/
return json.parseOne(_str);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14