|
分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
本帖最后由 cnfull 于 2022-8-5 21:11 编辑
要用到JSON的时候才发现原来JSON的模块都这么不好用,盘点市面上的模块:
COM组件类型的,非常不稳客,
RJ***的,很容易闪退,
YY**的,同上
精易的,很慢很慢*****
自己做了个JS的操作模块,不晓得速度怎么样。分享给大家吧。
简单,用JS链式访问对象 key1.key2.key3.****** key值支持数组下标或键名
模块
JS代码如下:
[JavaScript] 纯文本查看 复制代码
//获取对象所有键
function GetJsonKeys(jsonObjString) {
var json = s2j(jsonObjString)
var keys = []
for (var p1 in json) {
if (json.hasOwnProperty(p1))
keys.push(p1);
}
var resText=keys.toString()
return resText
}
console.log(GetJsonKeys('{name:"123",age:18}'))
//获取键值
function GetJsonKeysValue(jsonObjString, Keys) {
var json = s2j(jsonObjString)
if (Keys) {
var KeyList = Keys.split('.')
var jsonValue = json
for (var i = 0; i < KeyList.length; i++) {
jsonValue = jsonValue[KeyList]
}
if ((typeof jsonValue) == "object")
return json2str(jsonValue)
else
return jsonValue
} else {
if ((typeof json) == "object")
return json2str(json)
else
return json
}
}
//获取对象类型
function GetJsonKeysType(jsonObjString, Keys) {
var json = s2j(jsonObjString)
if (Keys) {
var KeyList = Keys.split('.')
var jsonValue = json
for (var i = 0; i < KeyList.length; i++) {
jsonValue = jsonValue[KeyList]
}
if (isArray(jsonValue))
return "array"
else
return (typeof jsonValue)
} else {
if (isArray(json))
return "array"
else
return (typeof json)
}
}
//获取对象长度
function GetJsonKeysLength(jsonObjString, Keys) {
var json = s2j(jsonObjString)
if (Keys) {
var KeyList = Keys.split('.')
var jsonValue = json
for (var i = 0; i < KeyList.length; i++) {
jsonValue = jsonValue[KeyList]
}
return jsonValue.length
} else {
return json.length
}
}
//判断是否为数组
function isArray(v) {
return (v instanceof Array)
}
/***json对象转字符串形式 */
function json2str(o) {
var arr = [];
var fmt = function(s) {
if (typeof s == 'object' && s != null) return json2str(s);
return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s;
}
for (var i in o) arr.push("'" + i + "':" + fmt(o));
return '{' + arr.join(',') + '}';
}
//字符串转JSON对象
function s2j(e) {
var json = (new Function("return " + e))();
return json;
}
易模块代码如下
窗口程序集名 | 保 留 | 保 留 | 备 注 | ZmJson, , 公开 | | | | 变量名 | 类 型 | 数组 | 备 注 | js | 类_脚本组件 | | 如果 (js. 执行 ( #GetJsonValue )) 调试输出 (“Js初始化成功”)调试输出 (“Js初始化失败”)|
获取所有键 | 整数型 | | |
JsonText | 文本型 | | | | keys | 文本型 | | | |
s = js. 运行 (“GetJsonKeys”, JsonText, , , , , )keys = 分割文本 (s, “,”, )返回 (取数组成员数 (keys )) |
取文本 | 文本型 | | |
JsonText | 文本型 | | | | Keys | 文本型 | | | | 如果 (Keys ≠ “”)返回 (js. 运行 (“GetJsonKeysValue”, JsonText, Keys, , , , )) 返回 (js. 运行 (“GetJsonKeysValue”, JsonText, , , , , )) |
取类型 | 文本型 | | |
JsonText | 文本型 | | | | Keys | 文本型 | | | | 如果 (Keys ≠ “”)返回 (js. 运行 (“GetJsonKeysType”, JsonText, Keys, , , , )) 返回 (js. 运行 (“GetJsonKeysType”, JsonText, , , , , )) |
取长度 | 整数型 | | |
JsonText | 文本型 | | | | Keys | 文本型 | | | | 如果 (Keys ≠ “”)返回 (到整数 (js. 运行 (“GetJsonKeysLength”, JsonText, Keys, , , , )) )返回 (到整数 (js. 运行 (“GetJsonKeysLength”, JsonText, , , , , )) )
附件模块源码
|
评分
-
查看全部评分
|