JSON 解析URL参数

Posted cdming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON 解析URL参数相关的知识,希望对你有一定的参考价值。

JSON 解析URL参数

使用JS函数将URL参数解析为JSON对象

问题:请编写一个javascript函数parseQueryString,它的用途是把URL参数解析为一个对象。
例如:var obj=parseQueryString(url);

创建对象

创建对象的三种形式:

一:

var Person=new Object();
Person.name="Sun";
Person.age=24;


二:

var Person=new Object();
Person["name"]="Sun";
Person["age"]=24;


三:

对象字面量表达式

var Person=
name: "Sun",
age: 24


PS:
1、在这个例子中,比较适合使用第二种形式,向obj中添加元素
2、split("&") , 如果url只有一个参数的时候,没有“&”的时候,也不会报错,只会返回array[0]

function parseQueryString(url) 
    var obj = ;
    var keyvalue = [];
    var key = "",
        value = "";
    var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
    for (var i in paraString) 
        keyvalue = paraString[i].split("=");
        key = keyvalue[0];
        value = keyvalue[1];
        obj[key] = value;
    
    return obj;

以下介绍了JS根据key值获取URL中的参数值及把URL的参数转换成json对象,js通过两种方式获取url传递参数,代码

示例一:

//把url的参数部分转化成json对象 

 parseQueryString: function(url) 
     var reg_url = /^[^/?]+/ ? ([\\w\\W] + ) $ / ,
         reg_para = /([^&=]+)=([\\w\\W]*?)(&|$|#)/g,
         arr_url = reg_url.exec(url),
         ret = ;
     if (arr_url && arr_url[1]) 
         var str_para = arr_url[1],
             result;
         while ((result = reg_para.exec(str_para)) != null) 
             ret[result[1]] = result[2];
         
     
     return ret;
 

// 通过key获取url中的参数值

 getQueryString: function(name) 
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]);
    return null;

示例二:

js通过两种方法获取url传递参数:

js获取url传递参数方法一:

 这里是一个获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,php的$_GET
函数:

function GetRequest() 
    var url = location.search; //获取url中"?"符后的字串 
    var theRequest = new Object();
    if (url.indexOf("?") != -1) 
        var str = url.substr(1);
        strs = str.split("&");
        for (var i = 0; i < strs.length; i++) 
            theRequest[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
        
    
    return theRequest;

然后我们通过调用此函数获取对应参数值:

var Request = new Object();
Request = GetRequest();
var 参数1,参数2,参数3,参数N;
参数1 = Request[''参数1''];
参数2 = Request[''参数2''];
参数3 = Request[''参数3''];
参数N = Request[''参数N''];

以此获取url串中所带的同名参数

js获取url传递参数方法二 正则分析法:

function GetQueryString(name) 
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var r = window.location.search.substr(1).match(reg);
    if (r != null) return (r[2]);
    return null;

alert(GetQueryString("参数名1"));
alert(GetQueryString("参数名2"));
alert(GetQueryString("参数名3"));

其他参数获取介绍:

//设置或获取对象指定的文件名或路径。

alert(window.location.pathname);

//设置或获取整个 URL 为字符串。

alert(window.location.href);

//设置或获取与 URL 关联的端口号码。

alert(window.location.port);

//设置或获取 URL 的协议部分。

alert(window.location.protocol);

//设置或获取 href 属性中在井号“#”后面的分段。

alert(window.location.hash);

//设置或获取 location 或 URL 的 hostname 和 port 号码。

alert(window.location.host);

//设置或获取 href 属性中跟在问号后面的部分。

alert(window.location.search);

url 参数解析成json格式

在项目中遇到需要在不同页面之间通过url参数传递数据,在其他页面获取到的数据的格式是index.html?name=‘sialia‘&age=18,
需要将参数处理成json格式,下面是解析代码

function urlParse(){
    var url = window.location.search;
        var obj = {};
        var reg = /[?&][^?&]+=[^?&]+/g;
        var arr = url.match(reg);

        if (arr) {
            arr.forEach(function (item) {
                var tempArr = item.substring(1).split(‘=‘);
                var key = decodeURIComponent(tempArr[0]);
                var val = decodeURIComponent(tempArr[1]);
                obj[key] = val;
            });
        }
        return obj;
}

以上是关于JSON 解析URL参数的主要内容,如果未能解决你的问题,请参考以下文章

AWS Lambda 错误:当 url 参数包含 JSON 数组时,“无法将请求正文解析为 json”

python 解析ajax请求带有json参数,请求方式是post的url(注意:参数的json格式的)

在解析 JSON 数据时,我从相同的 url 得到不同的结果

jquery 将json对象当参数传递的问题

来讲讲怎样获取到url上所有参数并以对象形式保存,再讲讲JSON解析与序列化

如何使用 URL 参数和 UITableview 执行干净的 JSON 解码