UNPKG

jslib-tools

Version:

js工具库 封装常用的工具函数 如深拷贝 时间转换日期格式化、浏览器判断等,提高开发效率

105 lines (93 loc) 2.7 kB
/* * @Author: zhangyu * @Email: zhangdulin@outlook.com * @Date: 2021-06-23 20:22:57 * @LastEditors: zhangyu * @LastEditTime: 2021-06-25 17:14:39 * @Description: */ import { getType } from '../judgement/index' /** * 解码url参数值 eg:%E6%B5%8B%E8%AF%95 => 测试 * @param {string} param 要解码的字符串 eg:%E6%B5%8B%E8%AF%95 */ export function decode_url_param(param) { try { return decodeURIComponent(param); } catch (e) { return param; } } //----------------------- JSON.js ----------------------- var has = Object.prototype.hasOwnProperty, JSON_SPECIAL = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"': '\\"', '\\': '\\\\' }, JSON_NULL = "null"; //字符转义 function json_replace(c) { //return JSON_SPECIAL[c]||'\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4); return JSON_SPECIAL[c] || c; } //json转化 function json_encode(obj) { switch (getType(obj)) { case "string": return '"' + obj.replace(/[\x00-\x1f\\"]/g, json_replace) + '"'; case "list": case "array": var tmp = []; for (var i = 0, len = obj.length; i < len; i++) { if (typeof obj[i] !== "function") tmp.push(obj[i] != undefined ? json_encode(obj[i]) : JSON_NULL); } return "[" + tmp + "]"; case "object": case "arguments": var tmp = []; for (var k in obj) { if (has.call(obj, k) && typeof obj[k] !== "function") tmp.push("\"" + k + "\":" + json_encode(obj[k])); } return "{" + tmp.toString() + "}"; case "boolean": return obj + ""; case "number": return isFinite(obj) ? obj + "" : JSON_NULL; case "date": return isFinite(obj.valueOf()) ? "\"" + obj.toUTC().format("yyyy-MM-ddTHH:mm:ss.SZ") + "\"" : JSON_NULL; case "function": return; default: return typeof obj == "object" ? "{}" : JSON_NULL; } } //json解析 //secure:是否进行安全检测 function json_decode(text, secure) { //安全检测 if (secure !== false && !/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) throw new Error("JSON SyntaxError"); try { return (new Function("return " + text))(); } catch (e) { } } if (!window.JSON) { window.JSON = { stringify: json_encode, parse: json_decode }; } JSON.encode = json_encode; JSON.decode = json_decode; export default { decode_url_param, json_replace, json_encode, json_decode }