首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何转义JSON字符串以将其包含在URL中?

如何转义JSON字符串以将其包含在URL中?
EN

Stack Overflow用户
提问于 2011-07-24 21:53:15
回答 6查看 190.6K关注 0票数 138

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

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

代码语言:javascript
复制
http://example.com/?data="MY_JSON_ARRAY_HERE"

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

如果有使用JQuery的解决方案,我会很高兴。

注意:是的,页面的参数需要在一个数组中,因为有很多这样的参数。我想之后我会使用bit.ly来缩短链接。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-07-24 21:55:04

代码语言:javascript
复制
encodeURIComponent(JSON.stringify(object_to_be_serialised))
票数 228
EN

Stack Overflow用户

发布于 2011-07-24 21:55:37

您可以使用encodeURIComponent安全地对查询字符串的某些部分进行URL编码:

代码语言:javascript
复制
var array = JSON.stringify([ 'foo', 'bar' ]);
var url = 'http://example.com/?data=' + encodeURIComponent(array);

或者,如果您将其作为AJAX请求发送:

代码语言:javascript
复制
var array = JSON.stringify([ 'foo', 'bar' ]);
$.ajax({
    url: 'http://example.com/',
    type: 'GET',
    data: { data: array },
    success: function(result) {
        // process the results
    }
});
票数 19
EN

Stack Overflow用户

发布于 2013-03-20 00:56:54

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

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

使用jQuery.param

  • 1691字符使用JSON.stringify + encodeURIComponent

  • 821字符使用JSURL.stringify

  • 2651字符

显然,对于urlEncoding一个js对象,JSURL的格式是最优化的。

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

注释:经过测试,jsurl.js库似乎使用了ECMAScript 5函数,如Object.keys、Array.map和Array.filter。因此,它只能在现代浏览器上运行(不适用于IE8或更低版本)。然而,这些函数是polyfills,这将使其与更多的浏览器兼容。

适用于阵列的

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6807180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档