Méthode normalisée pour sérialiser JSON à la chaîne de requête?

Je suis en train de construire une bonne API et je suis en difficulté sur la façon de sérialiser JSON des données à un HTTP query string.

Il y a un certain nombre de obligatoires et facultatives les arguments qui doivent être transmis dans la demande, l'e.g (représenté comme un objet JSON ci-dessous):

{
   "-columns" : [
      "name",
      "column"
   ],
   "-where" : {
      "-or" : {
         "customer_id" : 1,
         "services" : "schedule"
      }
   },
   "-limit" : 5,
   "return" : "table"
}

J'ai besoin de l'appui d'un divers nombre de clients différents, donc je suis à la recherche d'une méthode normalisée pour convertir cet objet json à une chaîne de requête. Est-il un, et comment est-il?

Une autre alternative est de permettre aux utilisateurs de simplement passer le long de l'objet json dans un corps de message, mais j'ai lu que je devrais l'éviter (HTTP GET avec le corps de la requête).

Toutes les pensées?

Modifier pour la clarification:

Inscription comment certains différentes langues, code de la donnée json en objet ci-dessus:

  • jQuery à l'aide de $.param: -columns[]=name&-columns[]=column&-where[-or][customer_id]=1&-where[-or][services]=schedule&-limit=5&return=column
  • PHP à l'aide de http_build_query: -columns[0]=name&-columns[1]=column&-where[-or][customer_id]=1&-where[-or][services]=schedule&-limit=5&return=column
  • Perl à l'aide de URI::query_form: -colonnes=nom&-colonnes=colonne&-si=HASH(0x59d6eb8)& limit=5&retour=colonne
  • Perl à l'aide de complex_to_query: -columns:0=name&-columns:1=column&-limit=5&-where.-or.customer_id=1&-where.-or.services=schedule&return=column

jQuery et PHP est très similaire. Perl à l'aide de complex_to_query est également assez semblables à eux. Mais pas exactement le même.

  • pourquoi ne pas tout simplement à l'aide de requêtes POST?
  • vérifier si cela aide, api.jquery.com/jQuery.param
  • Parce que je suis en train de chercher (GET) certaines données, pas POSTER de nouvelles données.
  • Vous êtes à la recherche pour ce faire sur le côté serveur, et si oui, dans quelle langue? Si sur le côté client, vous pouvez utiliser jquery?
  • C'est jQuery spécifiques, droit? Est-il normalisé?
  • ok, si vous ne voulez pas utiliser POST alors pourquoi ne pas l'url de codage de votre JSON et le mettre dans un unique paramètre de chaîne de requête?
  • L'API est sur le côté serveur, écrit en PERL 5, mais qui n'a pas d'importance je crois. Je ne maîtrise pas les langues dans lesquelles les clients seront écrits.
  • Oui exactement! Mais l'encodage semble être fait dans différentes langues, d'où la question si il y a une façon standardisée.
  • J'ai toujours pensé que l'encodage de l'url est indépendante de la langue. vous venez de remplacer certains caractères par leur représentation hexadécimale précédé par un % caractère. en.wikipedia.org/wiki/Percent-encoding
  • Honnêtement, je ne sais pas si il y a un moyen standardisé de faire, je pense que son tout environ la langue que vous utilisez. pour jquery vous pouvez utiliser celui que je vous ai envoyé. vous pouvez utiliser d'autres bibliothèques en dotnet. Ou vous pouvez créer votre propre fonction pour sérialiser et désérialiser JSON à la chaîne de recherche et à l'arrière.
  • Édité le post avec des exemples de jQuery, PHP et PERL.
  • Semble que chaque langue a sa propre mise en œuvre.
  • oui, mais le résultat est le même à travers toutes ces implémentations. vous avez le protocole HTTP, et chaque langue a ses propres clients. mais le protocole est toujours le même. même ici.
  • Si j'allais à mon propre sérialisation/désérialisation, comment les clients, écrits en différentes langues, les utiliser?
  • J'ai posté les résultats de certaines langues différentes, et ils ne sont pas les même :/
  • double possible de Sérialiser JSON à la chaîne de requête en JavaScript/jQuery

InformationsquelleAutor Andreas | 2013-04-08