javascript - URL 参数 : Line break %0A causing JSON. 解析为阻塞

标签 javascript json regex urlencode

我正在从 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 参数:

&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));

关于javascript - URL 参数 : Line break %0A causing JSON. 解析为阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49890805/

相关文章:

python - 使用无效字符解码 JSON

多个缓冲区上的 C++ 正则表达式

javascript - TinyMCE:可以禁止给定属性中的指定值吗?

javascript 对象 System.Collections.Generic.List`1[System.String]?

javascript - 如果我不嵌套 if/else 语句,代码将不起作用。为什么我要嵌套?

java - Jackson(由 JAX-RS 客户端反序列化 Java 8 日期/时间

javascript - 使用 JQUERY 显示嵌套 JSON

python - 逐年匹配点并将其删除

javascript - 如何在 vuetify 的浅色主题中启用自定义颜色的深色模式?

javascript - 使用A4J,如何重新渲染javascript函数,并在重新渲染后调用它?