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 得到不同的结果