URL参数转JSON
Posted 笑虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了URL参数转JSON相关的知识,希望对你有一定的参考价值。
URL参数转JSON
别人写的太优秀了,干脆只留好东西吧。。。
收集方案
★★★★★ Object.fromEntries + URLSearchParams
直接从URL中取出请求参数,转JSON.
var jsonParams = Object.fromEntries(new URLSearchParams(location.search));
加一级 decodeURIComponent
Object.fromEntries(new URLSearchParams(decodeURIComponent(location.search)));
JSON.parse + replace
JSON.parse('"' + decodeURIComponent(location.search.substring(1)).replace(/"/g, '\\\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"');
JSON.parse('"' + decodeURIComponent(decodeURIComponent(location.search.substring(1))).replace(/"/g, '\\\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"');
解决嵌套对象
JSON.parse(decodeURIComponent('"' + decodeURIComponent(location.search.substring(1)).replace(/"/g, '\\\\"')
.replace(/&/g, '","')
.replace(/=/g,'":"')
.replace(/"%7B/g,'')
.replace(/%7D"/g,'')
.replace(/%22/g,'"')+ '"'));
JSON.parse('"' + decodeURIComponent(decodeURIComponent(location.search.substring(1)))
.replace(/&/g, '","')
.replace(/=/g,'":"')
.replace(/"/g,'')
.replace(/"/g,'') + '"');
Array.from + reduce
Array.from(new URLSearchParams(window.location.search)).reduce((o, i) => ( ...o, [i[0]]: i[1] ), );
replace + 正则
var obj = ;
location.search.substring(1).replace(/([^=&]+)=([^&]*)/g, function(m, key, value)
obj[decodeURIComponent(key)] = decodeURIComponent(value);
);
console.table(obj);
参考资料
URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串。
Array.from() 方法对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
Object.fromEntries() 方法把键值对列表转换为一个对象。
stackoverflow :how-to-convert-url-parameters-to-a-javascript-object
以上是关于URL参数转JSON的主要内容,如果未能解决你的问题,请参考以下文章