如何转义JSON字符串以将其放在URL中?

2022-08-30 04:05:29

使用Javascript,我想生成一个指向页面的链接。页面的参数位于我在JSON中序列化的Javascript数组中。

所以我想生成一个这样的URL:

http://example.com/?data="MY_JSON_ARRAY_HERE"

我需要如何转义我的JSON字符串(序列化数组)以将其作为参数包含在URL中?

如果有使用JQuery的解决方案,我会喜欢它。

注意:是的,页面的参数需要位于数组中,因为有很多参数。我想我会用 bit.ly 来缩短链接。


答案 1
encodeURIComponent(JSON.stringify(object_to_be_serialised))

答案 2

我想做同样的事情。对我来说问题是我的网址太长了。我今天使用Bruno Jouhier的jsUrl.js库找到了解决方案。

我还没有非常彻底地测试它。但是,下面是一个示例,显示了使用 3 种不同的方法对同一大型对象进行编码后字符串输出的字符长度:

  • 2651 个字符使用jQuery.param
  • 1691 个字符使用JSON.stringify + encodeURIComponent
  • 821 个字符使用JSURL.stringify

显然,JSURL具有最优化的格式,用于url编码js对象。

https://groups.google.com/forum/?fromgroups=#!topic/nodejs/ivdZuGCF86Q 处的线程显示了编码和解析的基准。

注意:经过测试,它看起来像 jsurl.js库使用 ECMAScript 5 函数,如 Object.keys、Array.map 和 Array.filter。因此,它仅适用于现代浏览器(没有ie 8及更低版本)。但是,这些功能的polyfills将使其与更多浏览器兼容。