将网址url中的参数转化为JSON格式的两种方法

摘要:在我们进入主题前,我先先看下获取网址URL的方法:window.location.href 设置或获取整个URL为字符串 ,window.location.hash设置或获取href属性中在井号#后面的部分参数

在我们进入主题前,我先先看下获取网址URL的方法:

window.location.href // 设置或获取整个URL为字符串 
window.location.hash // 设置或获取href属性中在井号#后面的部分参数 
window.location.search // 设置或获取href属性中跟在问号?后面,井号#前面的部分参数

例如我们这里有一个url,例如:http://127.0.0.1:8080/html/urltojson.html?id=1&name=good#&price=1003

下面看下上面三个方法是如何使用的

console.log(window.location.href);
// http://127.0.0.1:8080/html/urltojson.html?id=1&name=good#&price=1003
console.log(window.location.hash);
// #&price=1003
console.log(window.location.search);
// ?id=1&name=good

我们看到了上面三个方法的返回参数是不一样的,我们接下来看下如果将url转换为json格式的数据。


第一种: for 循环方式

// 第一种: for循环
var GetQueryJson1 = function () {
  let url = location.href; // 获取当前浏览器的URL
  let arr = []; // 存储参数的数组
  let res = {}; // 存储最终JSON结果对象
  arr = url.split('?')[1].split('&'); // 获取浏览器地址栏中的参数
   
  for (let i = 0; i < arr.length; i++) { // 遍历参数
    if (arr[i].indexOf('=') != -1){ // 如果参数中有值
      let str = arr[i].split('=');
      res[str[0]] = str[1];
    } else { // 如果参数中无值
      res[arr[i]] = '';
    }
  }
  return res;
}
console.log(GetQueryJson1());

 

第二种:正则表达式方式

// 第二种:正则表达式
var GetQueryJson2 = function () {
  let url = location.href; // 获取当前浏览器的URL
  let param = {}; // 存储最终JSON结果对象
  url.replace(/([^?&]+)=([^?&]+)/g, function(s, v, k) {
    param[v] = decodeURIComponent(k);//解析字符为中文
    return k + '=' +  v;
  });
  return param;
}
 
console.log(GetQueryJson2());


以上所述是给大家介绍的JS将网址url转化为JSON格式的方法,希望对大家有所帮助


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_4224