JavaScript 对象 (JSON) 到 URL 字符串格式

Posted

技术标签:

【中文标题】JavaScript 对象 (JSON) 到 URL 字符串格式【英文标题】:JavaScript Object (JSON) to URL String Format 【发布时间】:2013-11-23 11:18:35 【问题描述】:

我有一个类似的 JSON 对象


    "version" : "22",
    "who: : "234234234234"

我需要将它放在一个准备好作为原始 http 正文请求发送的字符串中。

所以我需要它看起来像

version=22&who=234324324324

但目前我有无数个参数,它需要工作

app.jsonToRaw = function(object) 
    var str = "";
    for (var index in object) str = str + index + "=" + object[index] + "&";
    return str.substring(0, str.length - 1);
;

但是在原生 js 中一定有更好的方法来做到这一点?

谢谢

【问题讨论】:

那个“原生JS”。您唯一忘记的是对每个参数名称及其值(分别)调用escapeURIComponent 哦,如果您的任何属性可能具有数组值或子对象的值,那么您的代码将不得不以某种方式处理它(具体如何取决于您的服务器期望)。 见 ***.com/q/14525178/989121 和许多其他人。 @thg435 +1 与我的解决方案相同(信中!) @Tibos:注意它不处理嵌套。 【参考方案1】:

2018 年更新

var obj = 
    "version" : "22",
    "who" : "234234234234"
;

const queryString = Object.entries(obj).map(([key, value]) => 
    return `$encodeURIComponent(key)=$encodeURIComponent(value)`;
).join('&');

console.log(queryString); // "version=22&who=234234234234"

原帖

您的解决方案非常好。一个看起来更好的可能是:

var obj = 
    "version" : "22",
    "who" : "234234234234"
;

var str = Object.keys(obj).map(function(key) 
  return encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]); 
).join('&');

console.log(str); //"version=22&who=234234234234"

encodeURIComponent+1 @Pointy

【讨论】:

太棒了!这很有帮助

以上是关于JavaScript 对象 (JSON) 到 URL 字符串格式的主要内容,如果未能解决你的问题,请参考以下文章

通过 AJAX 调用将 JSON 对象列表传递给控制器

带有 JSON 的 JQuery 选择器

JavaScript 对象 (JSON) 到 URL 字符串格式

Thymeleaf 将 JSON 字符串作为 JSON 对象打印到 javascript 变量中

使用 Jinja 将数据作为 JSON 对象从 Python 发送到 Javascript [重复]

Android - 将 JSON 对象从 webview javascript 传递到 java