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);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中获取请求体的JSON解析JSON对象时出现了参数含有空格和乱码的问题。出现这个问题可能是由于请求体JSON中的参数值中含有空格或者非UTF-8编码导致的。 要解决这个问题,首先需要检查并确认请求体JSON中的参数值是否正确且符合JSON格式的规范。如果参数值含有空格或其他特殊字符,建议在发送请求时对参数值进行URL编码,确保其在传输过程中不会出现乱码。 在Java代码中,可以使用URLDecoder对请求体JSON进行解码。例如,可以使用如下代码获取请求体中的JSON字符串,并进行解码: String body = request.getReader().lines().collect(Collectors.joining(System.lineSeparator())); String decodedBody = URLDecoder.decode(body, "UTF-8"); 接下来,可以使用JSON库(如Jackson、Gson等)将解码后的JSON字符串解析JSON对象。例如,对于使用Jackson库的情况,可以使用如下代码将解码后的JSON字符串解析JSON对象: ObjectMapper mapper = new ObjectMapper(); JsonNode jsonNode = mapper.readTree(decodedBody); 在解析JSON对象之后,可以通过遍历JSON对象的属性、调用对应的getter方法等获取具体的参数值,进行后续的业务逻辑处理。 综上所述,要解决Java获取请求体JSON解析JSON对象参数含有空格乱码的问题,需要注意参数值的格式以及编码方式,并在Java代码中正确解码和解析JSON对象。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值