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 字符串格式的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 对象 (JSON) 到 URL 字符串格式
Thymeleaf 将 JSON 字符串作为 JSON 对象打印到 javascript 变量中