Convertir objet JSON en query string
Construisez la fin d'une adresse web à partir de vos valeurs sans la casser : un nom, une ville, un indicateur oui ou non et un score donnent 4 paramètres, et Ada Lovelace voyage sous la forme Ada%20Lovelace. Résultat fourni avec et sans point d'interrogation. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
Assembler à la main ampersands et signes égal échoue dès qu’une valeur contient un espace, un ampersand, une lettre non ASCII ou un caractère réservé.
D’un objet plat à une chaîne de requête encodée
Une chaîne de requête URL est une suite de champs nom-égal-valeur joints par des ampersands, éventuellement précédée d’un point d’interrogation après le chemin. Cette capacité parcourt les clés propres de l’objet dans l’ordre d’insertion, convertit chaque valeur scalaire en chaîne stable (les booléens deviennent true ou false, les nombres finis utilisent la notation décimale ordinaire, null devient une valeur vide) et applique encodeURIComponent à chaque clé et chaque valeur afin que les espaces deviennent percent-twenty, les ampersands percent-twenty-six et qu’Unicode survive au transit.
Le résultat est une chaîne de requête sans inventer de séparateurs supplémentaires à partir de caractères spéciaux bruts. Les objets et tableaux imbriqués sont volontairement non pris en charge : un paramètre de requête est une paire clé-valeur plate, et sérialiser une structure imbriquée en une seule chaîne opaque masquerait des erreurs que l’appelant veut en général corriger avant que la requête ne quitte le client.
Les objets vides produisent une chaîne de requête vide et une forme avec le seul préfixe point d’interrogation, utile pour les tests qui affirment l’absence de paramètres plutôt que d’inventer une clé factice. Des limites de longueur sur le nombre de clés et la taille totale sérialisée empêchent des cartes pathologiques d’épuiser la mémoire sur le chemin gratuit du navigateur.
Quand convertir des valeurs en paramètres d'adresse
Les applications front-end qui gardent puces de filtre et pagination comme un objet simple ont besoin d’un unique encodeur avant d’écrire location.search afin qu’un texte d’apparence multi-valeur ne se coupe jamais sur un ampersand brut. Les services backend qui journalisent les requêtes sortantes ou construisent des URL signées à partir de cartes de configuration ont besoin des mêmes règles d’encodage percent que le navigateur pour que tickets de support et journaux d’accès correspondent à ce que le client a réellement envoyé. Une validation échouée ne consomme pas le solde.
Gardez des cartes plates sous les limites documentées, figez la requête encodée dans les tests, et vous obtenez des chaînes de paramètres reproductibles pour tableaux de bord, plugins LMS et workers de bord sans monter votre propre boîte à outils URL complète.
Cas d’usage
Construire location.search depuis l’état de l’app
Transformez un objet plat de filtres ou de formulaire en chaîne de requête encodée en percent avant d’écrire la barre d’adresse ou l’entrée d’historique du navigateur.
Questions fréquentes
Quels types de valeurs sont autorisés ?
Chaînes, nombres finis, booléens et null. Null devient une valeur vide après le signe égal.
Les clés et valeurs sont-elles encodées en percent ?
Oui. Clés et valeurs sont encodées avec encodeURIComponent afin que espaces, ampersands, signes égal et caractères non ASCII n’inventent pas de paramètres supplémentaires.
Que devient un espace ou une esperluette dans une valeur ?
Il est encodé pour ne pas couper l'adresse au mauvais endroit. Un espace devient %20, comme dans Ada%20Lovelace, et les esperluettes, lettres accentuées et autres caractères réservés sont encodés de la même façon, comme le fait le navigateur.
Puis-je convertir des données imbriquées ou des listes ?
Non. Seul un ensemble plat de noms et de valeurs est accepté. Une section imbriquée ou une liste est refusée avec un message clair, pour ne jamais produire une adresse d'apparence valide qui transporte des données à moitié structurées.
Que devient une valeur vide ?
Une valeur vide devient un paramètre portant son nom, sans rien après le signe égal : le nom est donc bien transmis. Un ensemble vide donne un résultat vide, pratique pour montrer qu'aucun paramètre n'est envoyé.
Les paramètres gardent-ils mon ordre ?
Oui. Ils sortent dans l'ordre où les noms apparaissent dans vos données. Dans l'exemple, name, city, active et score gardent cet ordre, et le résultat indique aussi le nombre de paramètres.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/data/json-to-query-params \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"object":{"name":"Ada Lovelace","city":"London","active":true,"score":42}}'const res = await fetch("https://api.kit.forhosting.com/data/json-to-query-params", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"object": {
"name": "Ada Lovelace",
"city": "London",
"active": true,
"score": 42
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/json-to-query-params",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"object": {
"name": "Ada Lovelace",
"city": "London",
"active": true,
"score": 42
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/json-to-query-params", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"object":{"name":"Ada Lovelace","city":"London","active":true,"score":42}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"object":{"name":"Ada Lovelace","city":"London","active":true,"score":42}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/json-to-query-params", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"object": {
"name": "Ada Lovelace",
"city": "London",
"active": true,
"score": 42
}
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.json_to_query_params",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 25 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Les API, les routeurs front-end et les pipelines d’analytique stockent souvent filtres et champs de formulaire sous forme de simple carte JSON, tout en ayant encore besoin d’une chaîne de requête correctement encodée pour la barre d’adresse ou un client HTTP sortant. Cette capacité accepte un objet JSON plat, convertit chaque valeur scalaire en texte, encode en percent chaque clé et chaque valeur, et renvoie la chaîne prête à coller avec des paires ordonnées et une carte de chaînes normalisée. Les objets et tableaux imbriqués sont rejetés avec invalid_input afin que l’appelant n’émette jamais de semi-déchet qui ressemble à une URL valide.
D’un objet plat à une chaîne de requête encodée
Lorsque votre source de vérité est déjà un objet JSON —par exemple un état de filtres, un modèle de formulaire ou une carte de configuration— vous avez besoin d’un moyen déterministe de transformer cette carte au format filaire attendu par navigateurs et serveurs. Comme le chemin n’est que du travail de chaînes et d’objets, sans réseau, sans graines aléatoires et sans horloge murale, des entrées identiques produisent toujours le même JSON. Le tarif API en cas de succès est la base publiée de $0.002 par élément, et les échecs de validation ne consomment pas le solde prépayé.
Contrat d’entrée, forme de la réponse et erreurs
La valeur doit être un objet plat dont les propriétés sont des chaînes, des nombres, des booléens ou null. Les nombres non finis (NaN et Infinity) sont rejetés car ils n’ont pas de forme portable standard dans les chaînes de requête. Exemple : name Ada Lovelace, city London, active true et score quarante-deux produisent une chaîne à quatre paramètres avec espaces et caractères réservés encodés en percent. Envoyez en POST un corps JSON avec le champ obligatoire object (alias json, data, params, map, fields). Vous pouvez aussi passer object comme texte JSON qui se parse en une telle carte. Les tableaux au niveau racine, null, les scalaires et toute valeur objet ou tableau imbriquée échouent avec invalid_input et un message anglais clair nommant la mauvaise clé le cas échéant. En cas de succès la réponse inclut query (la chaîne encodée sans point d’interrogation initial), query_with_prefix (la même avec point d’interrogation, ou le seul point d’interrogation s’il n’y a pas de clés), count (le nombre de paramètres), pairs (un tableau ordonné de chaînes key et value après coercition scalaire et avant encodage) et object (une carte de chaînes last-wins de ces valeurs coercées). Échec classique : envoyer des filtres imbriqués sous une clé filter égale à un objet et recevoir invalid_input au lieu d’une URL silencieusement cassée. Le tarif API en cas de succès est la base publiée de $0.002 par élément ; les échecs de validation ne sont pas facturés.
Où la conversion JSON vers requête apporte sa valeur
Les auteurs de cursus de fondations web veulent une landing dédiée à la sérialisation objet-vers-requête plutôt que d’enterrer le sujet sous un parseur bidirectionnel, car l’intention de recherche diffère : qui tient une carte JSON veut l’encodage, pas des options de mode parse. Comme l’implémentation est pure parse de niveau A, chaque appel réussi coûte le prix de base publié $0.002 sans jetons de modèle ni réseau sortant.
Cas d'intégration
Préparer des paramètres de requête HTTP sortants
Sérialisez des cartes de configuration et de requête en un fragment de requête sûr pour clients, webhooks et constructeurs d’URL signées.
Fixtures dorés pour tests d’encodage
Générez des chaînes de requête stables depuis des fixtures JSON en CI pour que espaces, ampersands et Unicode s’encodent de la même façon à chaque exécution.
Questions techniques
Comment convertir un objet JSON en chaîne de requête URL ?
Envoyez un objet plat dans le champ object (ou alias json, data, params). Le champ query de la réponse contient les paires key=value encodées en percent jointes par & ; query_with_prefix ajoute un ? initial.
Que faire si mon objet est imbriqué ?
La capacité exige un objet plat. Une structure imbriquée échoue avec invalid_input pour que vous puissiez aplatir ou redessiner la carte avant l’encodage plutôt que d’envoyer une URL ambiguë.
Combien coûte la conversion d’un objet JSON en chaîne de requête ?
L’outil navigateur est gratuit. Les requêtes API utilisent le solde KIT prépayé à $0.002 par appel réussi ; une entrée invalide n’est pas facturée.