URL 参数:换行符 %0A 导致 JSON.parse 阻塞

URL Param: Line break %0A causing JSON.parse to choke

我正在从 URL:

中编码的文本区域解析多行值
// URL Params:
?cn=asdf%20asdf&pn=asdf%20asdf&pe=asdf%40example.com&d=asdf%0A%0Aasdf&ye=test%40example.com&c=1234&tc=true

// JAVASCRIPT
var _url = window.location.href;
var _queryParams = decodeURIComponent( _url.split('?')[1] );
var _search = _queryParams;//location.search.substring(1);
var _data = JSON.parse('{"' + decodeURI(_search).replace(/"/g, '\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}');

但是当我在上面的 d= URL 参数中有一个多行文本值时,我从 JSON.parse() 函数中得到一个 Syntax Error: Unexpected token... 错误:

&d=asdf%0A%0Aasdf

我需要做什么 .replace() 正则表达式模式来处理换行符编码,%0A

编辑: 我已经成功地将 URL 参数转换为 javascript 对象。问题是里面的 replace([pattern match]) 函数在多行文本字符上窒息:%0A.

使用 URLSearchParams 解析查询字符串,然后使用 URLSearchParamsentries 方法将其变成普通的 Javascript 对象,然后将其字符串化为将其转换为 JSON 格式的字符串:

const queryString = '?cn=asdf%20asdf&pn=asdf%20asdf&pe=asdf%40example.com&d=asdf%0A%0Aasdf&ye=test%40example.com&c=1234&tc=true';
const params = new URLSearchParams(queryString);
console.log(params.get('d'));
const queryObj = {};
for (const [key, val] of params.entries()) {
  queryObj[key] = val;
}
console.log(JSON.stringify(queryObj));