JavaScript原生代码处理JSON的一些高频次方法合集

简介: JavaScript原生代码处理JSON的一些高频次方法合集


let json = {
    /**判断JSON格式*/ 
    isJSON: function (str) {
        if (typeof str == "string") {
            try {
                var obj = JSON.parse(str);
                if (typeof obj == "object" && obj) {
                    return true;
                } else {
                    return false;
                }
            } catch (e) {
                return false;
            }
        } else if (typeof str == "object") {
            return Object.prototype.toString.call(obj).toLocaleLowerCase() == "[object object]" && !obj.length;
        }
        return false;
    }, 
/**合并string类型的json*/ 
    mergeJsonString: function () {
        return JSON.parse((jsonStr1 + jsonStr2).replace(/}{/g, ","));
    }, /**拼接两个json*/ mergeJsonObject: function (json1, json2) {
        for (var i in json1) {
            json2[i] = json1[i];
        }
        return json2;
    }, 
/**将JSON对象转换为字符串*//** param 将要转为URL参数字符串的对象,key URL参数字符串的前缀, encode true/false 是否进行URL编码 默认为true return URL参数字符串,index不需要传参*/ 
    toGetString: function (param, key, encode, index, firstStr='?') {
        index || (index = 0);
        index++;
        if (param == null) return;
        var ps = "";
        var t = typeof (param);
        if (t == "string" || t == "number" || t == "boolean") {
            ps += "&" + key + "=" + ((encode == null || encode) ? encodeURIComponent(param) : param);
        } else {
            for (var i in param) {
                var k = key == null ? i : key + (param instanceof Array ? "[" + i + "]" : "." + i);
                ps += json.toGetString(param[i], k, encode, index, firstStr);
            }
        }
        index == 1 && (ps = ps.replace("&", firstStr));
        return ps;
        /*测试用例*/
        /* var obj = {a: '1', 'b': {c: '3'}, d: [{e: '4'}]}; alert(json.toGetString(obj)); alert(json.toGetString(obj, 'CLASS'));*/
    }, 
/**JSON转GET请求参数(只针对包含一个层级的json格式)*/ 
    toGetStringForOneDepthLevel: function (json, firstStr='?') {
        return firstStr+JSON.stringify(json).replace(/\t|\n|\r|\"|\{|\}/g, "").replace(/,/g, "&").replace(/:/g, "=");
    }, 
/**GET请求参数转JSON(只针对包含一个层级的json格式)*/ 
    fromGetStringForOneDepthLevel: function (getString) {
        return JSON.parse("{\"" + getString.substr(1 + getString.indexOf("?")).replace(/&/g, "\",\"").replace(/=/g, "\":\"") + "\"}");
    }, 
/**格式化json字符串格式*/
    string: function (json) {
        return JSON.stringify(json, null, 4);
    }, 
/**获取json对象一级属性个数*/ 
    length: function (obj) {
        var count = 0;
        for (var i in obj) {
            count++;
        }
        return count;
    },
    //比较两个json是否相同
    isObj(object) {
        return object && typeof (object) == "object" && Object.prototype.toString.call(object).toLowerCase() == "[object object]";
    },
    isArray(object) {
        return object && typeof (object) == "object" && object.constructor == Array;
    },
    getLength(object) {
        var count = 0;
        for (var i in object) count++;
        return count;
    },
    compare(objA, objB) {
        if (!this.isObj(objA) || !this.isObj(objB)) return false; //判断类型是否正确
        if (this.getLength(objA) != this.getLength(objB)) return false; //判断长度是否一致
        return this.compareObj(objA, objB, true);//默认为true
    },
    compareObj(objA, objB, flag) {
        for (var key in objA) {
            if (!flag) //跳出整个循环
                break;
            if (!objB.hasOwnProperty(key)) {
                flag = false;
                break;
            }
            if (!this.isArray(objA[key])) { //子级不是数组时,比较属性值
                if (objB[key] != objA[key]) {
                    flag = false;
                    break;
                }
            } else {
                if (!this.isArray(objB[key])) {
                    flag = false;
                    break;
                }
                var oA = objA[key], oB = objB[key];
                if (oA.length != oB.length) {
                    flag = false;
                    break;
                }
                for (var k in oA) {
                    if (!flag) //这里跳出循环是为了不让递归继续
                        break;
                    flag = this.compareObj(oA[k], oB[k], flag);
                }
            }
        }
        return flag;
    }
};
//去掉值为null或undefined的对象属性
Object.keys(d).forEach(k=>d[k]==null&&delete d[k]);
 
//去掉值为null或undefined或''的对象属性
Object.keys(d).forEach(k=>(d[k]==null||d[k]==='')&&delete d[k]);


相关文章
|
12天前
|
JavaScript
短小精悍的js代码
【10月更文挑战第17天】
114 58
|
4天前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤。通过这些工具,可以显著提升编码效率和代码质量。
55 4
|
6天前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
42 6
|
2天前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码。通过安装和配置这些工具,可以确保代码风格一致,提高代码质量和可读性。
11 1
|
7天前
|
JSON 人工智能 算法
探索LLM推理全阶段的JSON格式输出限制方法
文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
|
17天前
|
自然语言处理 JavaScript 前端开发
深入理解JavaScript中的闭包:原理、应用与代码演示
【10月更文挑战第12天】深入理解JavaScript中的闭包:原理、应用与代码演示
|
2月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
41 1
|
11天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
1天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
16天前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
在Java中处理JSON数据:Jackson与Gson库比较