تحويل كائن JSON إلى سلسلة استعلام
ابنِ نهاية عنوان الويب من قيمك دون أن تكسره: يصبح الاسم والمدينة وعلامة نعم أو لا والدرجة 4 معاملات، ويصل Ada Lovelace بأمان على شكل Ada%20Lovelace. وتحصل على النتيجة مع علامة الاستفهام وبدونها. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم
دمج علامات العطف وعلامات التساوي يدويًا يفشل بمجرد أن تحتوي القيمة على مسافة أو علامة عطف أو حرف غير ASCII أو حرف محجوز.
لماذا ينكسر ربط المعاملات يدويًا
الجزء الذي يلي علامة الاستفهام في عنوان الويب سلسلة من أزواج الاسم وعلامة المساواة والقيمة، تربط بينها علامات العطف. والربط اليدوي يعمل حتى تحتوي قيمة على مسافة أو علامة عطف أو حرف بعلامة أو رمز محجوز، فينقسم العنوان في المكان الخطأ أو يقرأ الخادم شيئًا لم ترسله. وترمّز هذه الأداة كل اسم وكل قيمة، فيصل Ada Lovelace على شكل Ada%20Lovelace، وفق القواعد نفسها التي يستخدمها المتصفح.
أين تفيد وما حدودها
تطبيق الويب الذي يحفظ عوامل التصفية ورقم الصفحة مجموعة بسيطة من القيم يحتاج إلى مرمّز واحد قبل كتابتها في شريط العنوان. والخدمة التي تسجل الطلبات الصادرة أو تبني روابط موقّعة تحتاج إلى القواعد نفسها، حتى تطابق السجلات ما أُرسل فعلًا. ولا تُقبل إلا المجموعات المسطحة، وتصبح القيم الفارغة معاملات فارغة، ويبقى ترتيب الأسماء كما هو.
من كائن مسطّح إلى سلسلة استعلام مرمّزة
سلسلة استعلام URL هي تسلسل حقول اسم-يساوي-قيمة مفصولة بعلامات عطف، وقد تُسبق بعلامة استفهام بعد المسار. تسير هذه القدرة على مفاتيح الكائن الخاصة بترتيب الإدراج، وتحوّل كل قيمة قياسية إلى سلسلة مستقرة (القيم المنطقية تصبح true أو false، والأعداد المنتهية تستخدم تدوينًا عشريًا عاديًا، وnull يصبح قيمة فارغة)، وتطبّق encodeURIComponent على كل مفتاح وكل قيمة حتى تصبح المسافات percent-twenty وعلامات العطف percent-twenty-six ويبقى Unicode أثناء النقل. النتيجة سلسلة استعلام دون اختراع فواصل إضافية من أحرف خاصة خام.
الكائنات والمصفوفات المتداخلة غير مدعومة عمدًا: معامل الاستعلام زوج مفتاح-قيمة مسطّح، وتسلسل البنية المتداخلة في سلسلة معتمة واحدة يخفي أخطاء يرغب المستدعي عادة في إصلاحها قبل أن يغادر الطلب العميل. الكائنات الفارغة تنتج سلسلة استعلام فارغة وشكلًا ببادئة علامة استفهام فقط، وهو مفيد للاختبارات التي تؤكد عدم وجود معاملات بدل اختراع مفتاح وهمي. حدود الطول على عدد المفاتيح والحجم الكلي المسلسل تمنع الخرائط المرضية من استنزاف الذاكرة في مسار المتصفح المجاني.
متى يفيد تحويل القيم إلى معاملات عنوان
تطبيقات الواجهة الأمامية التي تحتفظ برقائق المرشح والتصفح ككائن بسيط تحتاج إلى مرمّز واحد قبل كتابة location.search حتى لا ينقسم نص يبدو متعدد القيم على علامة عطف خام. خدمات الخلفية التي تسجّل الطلبات الصادرة أو تبني عناوين URL موقعة من خرائط الإعداد تحتاج إلى قواعد ترميز percent نفسها التي يستخدمها المتصفح حتى تطابق تذاكر الدعم وسجلات الوصول ما أرسله العميل فعليًا. التحقق الفاشل لا يستهلك الرصيد.
أبقِ الخرائط مسطّحة وتحت الحدود الموثّقة، وثبّت الاستعلام المرمّز في الاختبارات، لتحصل على سلاسل معاملات قابلة للتكرار للوحات والملحقات التعليمية وعمال الحافة دون أن تقيم مجموعة أدوات URL كاملة بنفسك.
حالات الاستخدام
بناء location.search من حالة التطبيق
حوّل كائن مرشحات أو نموذج مسطّحًا إلى سلسلة استعلام مرمّزة ب percent قبل كتابة شريط عنوان المتصفح أو إدخال السجل.
الأسئلة الشائعة
ما أنواع القيم المسموحة؟
سلاسل وأعداد منتهية وقيم منطقية وnull. يصبح null قيمة فارغة بعد علامة التساوي.
هل تُرمَّز المفاتيح والقيم ب percent؟
نعم. تُرمَّز المفاتيح والقيم ب encodeURIComponent حتى لا تخترع المسافات وعلامات العطف وعلامات التساوي والأحرف غير ASCII معاملات إضافية.
ماذا يحدث للمسافة أو علامة العطف داخل القيمة؟
تُرمَّز حتى لا تقسم العنوان في المكان الخطأ. تصبح المسافة %20 كما في Ada%20Lovelace، وتُرمَّز علامات العطف والحروف ذات العلامات والرموز المحجوزة الأخرى بالطريقة نفسها التي يرسل بها المتصفح.
هل يمكن تحويل بيانات متداخلة أو قوائم؟
لا. لا تُقبل إلا مجموعة مسطحة من الأسماء والقيم. ويُرفض القسم المتداخل أو القائمة برسالة واضحة، فلا تحصل أبدًا على عنوان يبدو صحيحًا لكنه يحمل بيانات نصف منظمة.
ماذا يحدث للقيمة الفارغة؟
تصبح القيمة الفارغة معاملًا يحمل اسمه ولا شيء بعد علامة المساواة، فيبقى الاسم مرسلًا. والمجموعة الفارغة تعطي نتيجة فارغة، وهذا مفيد حين تريد أن توضح أنه لا تُرسل أي معاملات.
هل تبقى المعاملات بترتيبي؟
نعم. تخرج بالترتيب الذي تظهر به الأسماء في بياناتك. في المثال تحتفظ name وcity وactive وscore بهذا الترتيب، وتذكر النتيجة أيضًا عدد المعاملات.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
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)مثال على الطلب
{
"object": {
"name": "Ada Lovelace",
"city": "London",
"active": true,
"score": 42
}
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.json_to_query_params",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 25 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
غالبًا ما تحتفظ واجهات API وموجّهات الواجهة الأمامية ومسارات التحليلات بالمرشحات وحقول النماذج كخريطة JSON بسيطة، ومع ذلك تحتاج إلى سلسلة استعلام مرمّزة بشكل صحيح لشريط العنوان أو لعميل HTTP صادر. تقبل هذه القدرة كائن JSON مسطّحًا واحدًا، وتحوّل كل قيمة قياسية إلى نص، وترمّز كل مفتاح وقيمة بترميز percent، وتعيد سلسلة الاستعلام الجاهزة للإلحاق مع أزواج مرتّبة وخريطة سلاسل موحّدة. تُرفض الكائنات والمصفوفات المتداخلة ب invalid_input حتى لا يُصدر المستدعي نفايات شبه مهيكلة تبدو كعنوان URL صالح. تشارك أداة المتصفح المجانية وواجهة API المدفوعة مسبقًا الوحدة النقية نفسها، لذا تتفق العروض التوضيحية والسكربتات وخطافات الإنتاج دائمًا على الترميز وترتيب المفاتيح.
من كائن مسطّح إلى سلسلة استعلام مرمّزة
عندما يكون مصدر الحقيقة لديك كائن JSON بالفعل —مثل حالة مرشحات أو نموذج نموذج أو خريطة إعدادات— تحتاج إلى طريقة حتمية لتحويل تلك الخريطة إلى صيغة السلك التي تتوقعها المتصفحات والخوادم. ولأن المسار عمل سلاسل وكائنات نقي بلا شبكة ولا بذور عشوائية ولا ساعة حائط، تنتج المدخلات المتطابقة دائمًا JSON متطابقًا. تسعير API عند النجاح هو الأساس المنشور $0.002 لكل عنصر، وإخفاقات التحقق لا تستهلك الرصيد المدفوع مسبقًا.
عقد الإدخال وشكل الاستجابة وسلوك الأخطاء
يجب أن تكون القيمة كائنًا مسطّحًا خصائصه سلاسل أو أعداد أو قيم منطقية أو null. تُرفض الأعداد غير المنتهية (NaN وInfinity) لأنها لا تملك شكلًا محمولًا قياسيًا في سلاسل الاستعلام. مثال: name هو Ada Lovelace وcity هو London وactive هو true وscore اثنان وأربعون ينتج سلسلة بأربعة معاملات مع مسافات وأحرف محجوزة مرمّزة ب percent. اربط النموذج المجاني في المتصفح للتحقق السريع، ثم نفس العقد من السكربتات عند الحاجة إلى إعداد معاملات بالجملة أو تركيبات ذهبية. أرسل جسم JSON بطريقة POST مع الحقل الإلزامي object (الأسماء البديلة json وdata وparams وmap وfields). يمكنك أيضًا تمرير object كنص JSON يُحلل إلى مثل هذه الخريطة. تفشل المصفوفات في المستوى الأعلى وnull والقيم القياسية وأي قيمة كائن أو مصفوفة متداخلة ب invalid_input ورسالة إنجليزية واضحة تسمّي المفتاح السيئ عند الاقتضاء. عند النجاح تتضمن الاستجابة query (السلسلة المرمّزة بلا علامة استفهام بادئة) وquery_with_prefix (نفس السلسلة بعلامة استفهام بادئة، أو علامة استفهام وحدها عند عدم وجود مفاتيح) وcount (عدد المعاملات) وpairs (مصفوفة مرتّبة من سلاسل key وvalue بعد الإكراه القياسي وقبل الترميز) وobject (خريطة سلاسل last-wins لتلك القيم المكرهة). فشل كلاسيكي: إرسال مرشحات متداخلة تحت مفتاح filter يساوي كائنًا وتلقّي invalid_input بدل عنوان URL مكسور بصمت. تسعير API عند النجاح هو الأساس المنشور $0.002 لكل عنصر؛ إخفاقات التحقق لا تُفوتر.
أين تثبت تحويل JSON إلى استعلام قيمته
مسارات QA وCI تولّد متجهات استعلام ذهبية من تركيبات JSON حتى تكون المسافة دائمًا percent-twenty ويُرمَّز علامة الزائد في القيمة ب percent بدل أن تُقرأ لاحقًا كمسافة نموذج. مواقع المحتوى التي تترتب على تحويل كائن JSON إلى سلسلة استعلام تستفيد من أداة حية يتطابق مسارها المجاني في المتصفح بايتًا بايت مع مسار الأتمتة المدفوع على الوحدة النقية نفسها، متمايزة عن محلّل سلسلة استعلام عام يركّز على قراءة سلاسل البحث الواردة. مؤلفو المناهج لأساسيات الويب يريدون صفحة مخصصة لتسلسل الكائن إلى استعلام بدل دفن الموضوع تحت محلّل ثنائي الاتجاه، لأن نية البحث تختلف: من يملك خريطة JSON يريد الترميز لا خيارات وضع parse. ولأن التنفيذ parse نقي من المستوى A، كل استدعاء ناجح يكلف السعر الأساسي المنشور $0.002 بلا رموز نموذج ولا شبكة صادرة.
حالات التكامل
تجهيز معاملات استعلام HTTP الصادرة
سلسل خرائط الإعداد والطلب إلى جزء استعلام آمن للعملاء وخطافات الويب وبناة عناوين URL الموقعة.
تركيبات ذهبية لاختبارات الترميز
ولّد سلاسل استعلام مستقرة من تركيبات JSON في CI حتى تُرمَّز المسافات وعلامات العطف وUnicode بالطريقة نفسها في كل تشغيل.
أسئلة تقنية
كيف أحوّل كائن JSON إلى سلسلة استعلام URL؟
أرسل كائنًا مسطّحًا في الحقل object (أو الأسماء البديلة json وdata وparams). حقل query في الاستجابة هو أزواج key=value المرمّزة ب percent مفصولة ب &؛ وquery_with_prefix يضيف ؟ في البداية.
ماذا لو كان كائني متداخلًا؟
تتطلب القدرة كائنًا مسطّحًا. تفشل البنية المتداخلة ب invalid_input حتى تسطّح الخريطة أو تعيد تصميمها قبل الترميز بدل إرسال عنوان URL غامض.
كم يكلف تحويل كائن JSON إلى سلسلة استعلام؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل استدعاء ناجح؛ الإدخال غير الصالح لا يُحاسب.