J'essaie de trouver des informations sur la façon de sérialiser un objet pour interroger le format de chaîne, mais toutes mes recherches sont noyées dans des résultats indiquant comment aller dans l'autre sens (chaîne/formulaire/quoi que ce soit en JSON).
J'ai
{ one: 'first', two: 'second' }
et je veux
?one=first&two=second
Y at-il un bon moyen de le faire? Cela ne me dérange pas que des plugins ou des conneries - si le code que je trouve n'est pas un plugin, je le réécrirai probablement de toute façon ...
Vous voulez $.param()
: http://api.jquery.com/jQuery.param/
Plus précisément, vous voulez ceci:
var data = { one: 'first', two: 'second' };
var result = $.param(data);
Quand on leur donne quelque chose comme ça:
{a: 1, b : 23, c : "te!@#st"}
$.param
retournera ceci:
a=1&b=23&c=te!%40%23st
Pour une fonction rapide non-JQuery ...
function jsonToQueryString(json) {
return '?' +
Object.keys(json).map(function(key) {
return encodeURIComponent(key) + '=' +
encodeURIComponent(json[key]);
}).join('&');
}
Notez que cela ne gère pas les tableaux ou les objets imbriqués.
Une autre option pourrait être node-querystring .
Il est disponible à la fois dans npm
et bower
, c'est pourquoi je l'utilise.
Sinon, YUI a http://yuilibrary.com/yui/docs/api/classes/QueryString.html#method_stringify .
Par exemple:
var data = { one: 'first', two: 'second' };
var result = Y.QueryString.stringify(data);