Pour un niveau de profondeur...
var serialiseObject = function(obj) {
var pairs = [];
for (var prop in obj) {
if (!obj.hasOwnProperty(prop)) {
continue;
}
pairs.push(prop + '=' + obj[prop]);
}
return pairs.join('&');
}
jsFiddle.
Il y avait parler d'une fonction récursive pour arbitrairement profonde des objets...
var serialiseObject = function(obj) {
var pairs = [];
for (var prop in obj) {
if (!obj.hasOwnProperty(prop)) {
continue;
}
if (Object.prototype.toString.call(obj[prop]) == '[object Object]') {
pairs.push(serialiseObject(obj[prop]));
continue;
}
pairs.push(prop + '=' + obj[prop]);
}
return pairs.join('&');
}
jsFiddle.
Bien sûr, cela signifie que l'imbrication contexte est perdu dans la sérialisation.
Si les valeurs ne sont pas codées dans l'URL pour commencer, et vous avez l'intention de les utiliser dans une URL, découvrez JavaScript encodeURIComponent()
.