序列化列表的好方法? - Javascript / AJAX

时间:2010-12-22 03:15:19

标签: javascript jquery ajax arrays serialization

只是想问这个,因为在stackoverflow上总会出现珠宝:)

我所拥有的是以下列表:

list1 = [['command','arg1','arg2'], ['command2','arg1'], ... ]

您如何建议将其转换为字符串以便作为ONE GET参数传递?

e.g。

http://webgame_site.com/command_list/?data=...

我目前正在做的是使用逗号, ;分隔列表,但我不喜欢这个想法,因为如果我决定在字符串中引入这些方法,方法会破坏。

我想尽可能地紧凑。


我有一个想法是将列表编码为base64:

[['command','arg1','arg2'], ['command2','arg1']]
=> "W1snY29tbWFuZCcsJ2FyZzEnLCdhcmcyJ10sWydjb21tYW5kMicsJ2FyZzEnXV0="

比URIencode


有什么想法吗? :)

2 个答案:

答案 0 :(得分:4)

将其转换为json,然后使用encodeURI对字符进行编码。

var list1 = [['command','arg1','arg2'], ['command2','arg1']];
var encoded = encodeURI(JSON.stringify(list1));

alert(encoded);

编辑base64:

var list1 = [['command','arg1','arg2'], ['command2','arg1']];
var encoded = btoa(JSON.stringify(list1));

alert(encoded);
alert(atob(encoded));

答案 1 :(得分:2)

jQuery.param()听起来不错。