在实际的开发过程中,可能会遇到需要将 JSON对象转换为URL参数,或者将URL参数转换为JSON对象的场景,比如有一个JSON对象如下:
{
"type": 1,
"keyword": "js"
}
需要转换成URL参数:type=1&keyword=js
JSON对象转换为URL参数,主要有两种实现方式,一种是遍历JSON对象属性,另一种是使用 URLSearchParams ,下面分别结合代码介绍一下。
(1)遍历JSON对象属性
使用循环的方式遍历JSON对象的属性,然后将其拼接起来,这可能是最容易想到的一种方式,下面给出一种遍历JSON对象属性的实现方式:
function jsonToUrlParam(json) {
return Object.keys(json).map(key => key + '=' + json[key]).join('&');
}
测试一下
let json = {
"type": 1,
"keyword": "js"
};
console.log(jsonToUrlParam(json));
输出的结果如下:
type=1&keyword=js
在实际的应用场景中,一个JSON对象可能有很多属性,但是URL参数只需要部分属性,这个时候可以改造一下上面的方法,从而实现忽略指定的属性即可,如下:
function jsonToUrlParam(json, ignoreFields) {
return Object.keys(json)
.filter(key => ignoreFields.indexOf(key) === -1)
.map(key => key + '=' + json[key]).join('&');
}
测试一下忽略 type 属性
let json = {
"type": 1,
"keyword": "js"
};
console.log(jsonToUrlParam(json, ['type']));
输出的结果如下:
keyword=js
(2)URLSearchParams
关于 URLSearchParams,可以先来看看官方https://developer.mozilla.org/zh-CN/docs/Web/api/URLSearchParams的定义
URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串。
简单来说,它就是用来处理URL上的参数字符串的,即 ? 后面部分 A=B&C=D&E=F 的内容,开头的'?' 字符会被忽略,来看看它是如何使用的:
function jsonToUrlParam(json) {
return new URLSearchParams(json).toString();
}
测试一下
let json = {
"type": 1,
"keyword": "js"
};
console.log(jsonToUrlParam(json));
输出的结果如下:
type=1&keyword=js
比如有这样的一个 URL :http://example.com?type=1&key...,它的参数部分为 type=1&keyword=js,如何将其转换为一个JSON对象呢?具体实现代码如下:
function urlParamToJson(urlParam) {
let json = {};
urlParam.trim()
.split('&')
.forEach(item => json[item.split('=')[0]] = item.split('=')[1]);
return json;
}
测试一下
console.log(JSON.stringify(urlParamToJson('type=1&keyword=js')))
输出结果如下:
{"type":"1","keyword":"js"}
对于这个方法,也可以对其进行改造一下,直接传入一个url,然后在方法里面提取参数部分,最后再进行转换,代码如下:
function urlParamToJson(url) {
if (!url) {
return {};
}
let json = {};
url.substring(url.indexOf('?') + 1)
.trim()
.split('&')
.forEach(item => json[item.split('=')[0]] = item.split('=')[1]);
return json;
}
传入一个url进行测试
console.log(JSON.stringify(urlParamToJson('http://example.com?type=1&keyword=js')))
输出结果如下:
{"type":"1","keyword":"js"}
来自:https://segmentfault.com/a/1190000041961440
不使用动态语言php,java等,直接通过js获取链接中传递的get数据的方法总结。javascript可以获取当前页面的url 只要对获取下来的url进行简单地解析即可。
做一个短链接生成器,可以将一个长链接缩短成一个短链接。就是把普通网址,转换成比较短的网址。好处不言而喻。短、字符少、美观、便于发布、传播。
在浏览器地址栏输入URL,浏览器查看缓存,如果请求资源在缓存中并且新鲜,跳转到转码步骤,如果资源未缓存,发起新请求,如果已缓存,检验是否足够新鲜,足够新鲜直接提供给客户端,否则与服务器进行验证...
在WEB开发中,时常会用到javascript来获取当前页面的url网址信息,在这里是我的一些获取url信息的小总结。window.location.href(设置或获取整个 URL 为字符串),window.location.protocol(设置或获取 URL 的协议部分)
相对路径就是相对于当前文件的路径;可以防止被抄袭,如果网页位置改变,里面的链接还是指向正确的URL。在编码编写时不方便使用绝对路径,因为链接应该指向真正的域名,而不是开发站点。
一次接触qs这个库,是在使用axios时,用于给post方法编码,在使用过程中,接触到了一些不同的用法,写在这里分享一下:qs.parse、qs.stringify、排序、指定数组编码格式、处理json格式的参数
什么是短链接 ?就是把普通网址,转换成比较短的网址。好处不言而喻:短、字符少、美观、便于发布、传播。所以如何来优雅的生成足够短的字符串唯一ID呢?
window对象的URL对象是专门用来将blob或者file读取成一个url的。这个url可以用在html的任何可以使用url的地方,比如img的src ; audio/video的src和source标签等。
利用url访问远程的文件、图片、视频时有时需要请求前判断url地址是否有效。利用PHP自带的函数get_headers(),利用http返回值是否存在200状态,来判断url地址是否有效。
URL的格式由下列三部分组成:协议(或称为服务方式);存有该资源的主机IP地址(有时也包括端口号);主机资源的具体地址,如目录和文件名等。URI,统一资源标识符:主机名。存放资源的自身的名称,由路径表示
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!