URL参数转JSON

Posted 笑虾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

android 接收url的json数据 中文转码

JS中一些常用的代码块

json转为url参数

json与url的转换

jquery 将json对象当参数传递的问题

URL 片段中的多个参数