解析url的查询部分,生成对应的JSON对象

2024-09-04 21:18

本文主要是介绍解析url的查询部分,生成对应的JSON对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们知道在于服务器交互过程中,get和post是最重要的两种方式,在get方式下,我们通常会见到一大串网址信息,而这些信息是什么呢,有时候我们需要拿到它并进行分析

好了,我百度主页输入CSDN,搜索结果呈现给我们后,网址栏出现如下一串东西

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=csdn&rsv_pq=fdfd3c990005f0f7&rsv_t=cc0d6AGGoE2h1vZAcxlSMkTQA%2FVYgp0AwoTeWrt3kQ6Y9PzLYMnnMII%2BUPY&rqlang=cn&rsv_enter=1&rsv_sug3=4&rsv_sug1=3&rsv_sug7=100

除了前面的百度主页,后面这些是什么呢,我打开浏览器控制台,通姑window.location查询


细心的同志可能会发现,后面这一大串就是location对象的search属性

我们输入window.location.search

浏览器还是丢给我们这串不知所云的东西,细看一下又好像很多键值对和连接符号组成,我们能不能把它解析成更直观的JSON对象来看呢,很显然是可以的

看下面代码

			var url=window.location.search;var rep=/[?&][^?&]+=[^?&]+/g;//全局匹配所有"?"和“&”后面的键值对var arr=url.match(rep);//执行匹配操作,返回键值对数组console.log(arr);
再执行一下

好了,丢给我们这串数组,这次清楚一些了,不过还有“?”和“&”连接符存在,没有形成我们想要的JSON对象

接下来完善一下代码

	var url=window.location.search;
var rep=/[?&][^?&]+=[^?&]+/g;//全局匹配所有"?"和“&”后面的键值对
var arr=url.match(rep);//执行匹配操作,返回键值对数组
//console.log(arr);
var obj={};
if(arr){
arr.forEach(function(item){
var tempArr = item.substring(1).split('=');
var key = tempArr[0];
var val = tempArr[1];
obj[key] = val;
})
}
console.log(obj);
这次我百度我女神高圆圆,丢进程序看什么结果


好,基本得到我们想要的结果,里面有字符编码,上一次的访问记录等等东西,这样就完成了吗,怎么没见与女神任何相关的东西,别急,接下来见证奇迹

js为我们提供了一个专门编译URI的decodeURIComponent函数(全局函数),decodeURIComponent() 函数可对 encodeURIComponent() 函数编码的 URI 进行解码。

我猜测这里面有被编码过的信息,接下来解码试试

我代码是这样写的

var url=window.location.search;var rep=/[?&][^?&]+=[^?&]+/g;//全局匹配所有"?"和“&”后面的键值对var arr=url.match(rep);//执行匹配操作,返回键值对数组//console.log(arr);var obj={};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;})}console.log(obj);
运行


哈哈,果不其然,女神找到,这世界好神奇~

这篇关于解析url的查询部分,生成对应的JSON对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1137056

相关文章

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

MYSQL查询结果实现发送给客户端

《MYSQL查询结果实现发送给客户端》:本文主要介绍MYSQL查询结果实现发送给客户端方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql取数据和发数据的流程(边读边发)Sending to clientSending DataLRU(Least Rec

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据