تحويل الأسطر إلى مصفوفة JSON مع تهريب صحيح
الصق خمسة أسطر، بينها مسار Windows وجملة فيها علامات اقتباس، فتحصل على مصفوفة صالحة من 5 قيم: يخرج C:\data\file.txt بالشكل "C:\\data\\file.txt" دون أي إصلاح يدوي. مجانية في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- alpha A quoted "value" C:\data\file.txt last
- القيم
- alpha, A quoted "value", C:\data\file.txt, , last
- عدد الأسطر
- 5
وهي تقبل نهايات الأسطر في Unix وWindows وMac القديم، وتحافظ على المسافات داخل كل قيمة وعلى الأسطر الفارغة المقصودة. أما فاصل السطر الوحيد في النهاية فيُعد نهاية طبيعية للنص، ولا ينشئ عنصرًا فارغًا إضافيًا.
لماذا تفشل إضافة علامات الاقتباس يدويًا
وضع علامتي اقتباس حول كل سطر ببحث واستبدال سريع ينجح إلى أن يصل نص حقيقي. فالسطر الذي يحتوي على علامة اقتباس مزدوجة ينهي القيمة قبل أوانها، ومسار Windows مثل C:\data\file.txt يحتوي على شرطات مائلة عكسية يجب مضاعفتها، وعلامة الجدولة تحتاج إلى صيغة تهريب خاصة. لذلك يطبق المحوّل على كل سطر القواعد المعتادة للنصوص: تسبق علامةَ الاقتباس شرطةٌ مائلة عكسية، وتُضاعف الشرطات المائلة العكسية، وتُكتب أحرف التحكم بصيغة صالحة. وتبقى الحروف العربية والإيموجي مقروءة لأنها لا تحتاج إلى أي استبدال.
ما الذي يُعد قيمة واحدة
كل سطر قيمة واحدة بالضبط. لا يقسم المحوّل النص عند الفواصل أو الفواصل المنقوطة أو المسافات، ولا يقص أطراف السطر، فتحصل على ما ألصقته تمامًا. وتعطي فواصل الأسطر في Unix وWindows وأجهزة Mac القديمة النتيجة نفسها. يصبح السطر الفارغ في الوسط قيمة فارغة، أما فاصل السطر الأخير الوحيد فيُتجاهل. راجع القوائم المنسوخة من جداول البيانات أو الطرفية قبل استخدامها، لأن مسافة شاردة تنتج قيمة مختلفة.
ألصقوا قيمة نصية واحدة في كل سطر
ابدؤوا بنص عادي يمثل فيه كل سطر قيمة واحدة. تصلح قوائم المشتريات، وأعلام الميزات، وأسماء الملفات المنسوخة من الطرفية، وتسميات جداول البيانات، والمعرفات الواردة بالبريد الإلكتروني بوصفها مدخلات. لا تقسم الأداة السطر عند الفواصل أو الفواصل المنقوطة أو المسافات، ولذلك يبقى الترقيم الداخلي جزءًا من القيمة.
كما أنها لا تزيل المسافات في بداية السطر أو نهايته، إذ قد تكون ذات معنى في بيانات الاختبار أو البيانات ثابتة العرض أو التسميات الدقيقة. تنتج حدود LF في Unix وCRLF في Windows وCR في Mac القديم النتيجة نفسها. تتحول الأسطر الفارغة الداخلية إلى سلاسل فارغة.
وإذا انتهى النص الملصق بفاصل سطر، تتجاهل الأداة الفاصل الأخير وحده حتى لا تضيف عنصرًا فارغًا غير متوقع. يجب إرسال محرف واحد على الأقل؛ فالمدخل الفارغ تمامًا يُرفض بدل اختلاق قيمة بصمت.
راجعوا الحدود قبل استعمال المصفوفة
راجعوا النتيجة عندما يكون المصدر جدول بيانات أو طرفية أو محرر مستندات، لأن الأداة تحفظ المحتوى ولا تخمن المقصود. قد تنشئ المسافات غير الملحوظة سلاسل مختلفة، ويتحول السطر الفارغ الداخلي عمدًا إلى سلسلة فارغة. في المقابل، لا يفعل فاصل السطر الأخير سوى إنهاء المستند.
تمنع هذه القاعدة الثابتة تغير الأنواع من دون قصد.
حالات الاستخدام
إنشاء قائمة إعدادات
ألصقوا أسماء البيئات أو أعلام الميزات أو القيم المسموح بها واحصلوا على مصفوفة سليمة لملف إعدادات.
إنشاء بيانات اختبار موثوقة
حوّلوا أسماء الملفات والتسميات والحالات الحدية إلى بيانات حتمية مع الحفاظ على المسافات والعناصر الفارغة المهمة.
الأسئلة الشائعة
ماذا يحدث للأسطر الفارغة؟
تصبح الأسطر الفارغة الداخلية سلاسل فارغة. ويُتجاهل فاصل السطر الأخير كي لا يضيف قيمة وهمية.
هل تُحذف المسافات من كل سطر؟
لا. تُحفظ المسافات في البداية والنهاية لأنها قد تكون جزءًا من القيمة المطلوبة.
ماذا يحدث لعلامات الاقتباس والشرطات المائلة العكسية داخل السطر؟
تُهرَّب وفق القواعد المعتادة: تسبق علامةَ الاقتباس المزدوجة شرطةٌ مائلة عكسية، وتُضاعف الشرطة المائلة العكسية، وتتحول علامات الجدولة وأحرف التحكم الأخرى إلى صيغ صالحة. وبذلك يبقى السطر الذي فيه اقتباس قيمة واحدة صالحة.
هل يضيف فاصل السطر في النهاية قيمة فارغة؟
لا، فاصل السطر الأخير الوحيد يُعد النهاية الطبيعية للنص الملصوق، فلا يُنشئ الفاصل الذي تضيفه المحررات عادة قيمة فارغة مفاجئة. أما الأسطر الفارغة في الوسط فتصبح قيمًا فارغة.
هل تُقسم الفواصل داخل السطر إلى قيم منفصلة؟
لا، فاصل السطر وحده هو ما يفصل بين القيم، لذلك تبقى الفواصل والفواصل المنقوطة والمسافات داخل السطر جزءًا من قيمته. وهكذا تبقى العناوين والتسميات والجمل التي تحتوي على فواصل سليمة.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/str/lines-to-json-array \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"alpha\nA quoted \"value\"\nC:\\data\\file.txt"}'const res = await fetch("https://api.kit.forhosting.com/str/lines-to-json-array", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "alpha\nA quoted \"value\"\nC:\\data\\file.txt"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/lines-to-json-array",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "alpha\nA quoted \"value\"\nC:\\data\\file.txt"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/lines-to-json-array", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"alpha\\nA quoted \\"value\\"\\nC:\\\\data\\\\file.txt"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"alpha\nA quoted \"value\"\nC:\\data\\file.txt"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/lines-to-json-array", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "alpha\nA quoted \"value\"\nC:\\data\\file.txt"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.lines_to_json_array",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
حوّلوا قائمة ملصقة إلى مصفوفة JSON سليمة من دون إصلاح علامات الاقتباس أو الشرطات العكسية يدويًا. تعامل الأداة كل سطر بوصفه سلسلة نصية، وتطبق قواعد تهريب JSON، ثم تعيد نتيجة جاهزة للشيفرة إلى جانب القيم المحللة وعدد الأسطر.
دعوا قواعد JSON تحمي البيانات
يظهر الفرق حين يحتوي النص على علامة اقتباس مزدوجة أو شرطة عكسية أو علامة جدولة أو محرف تحكم آخر. يبقى نص Unicode مقروءًا؛ فلا تحتاج الأسماء والمحارف المنقوطة والرموز التعبيرية والكتابات الأخرى إلى بدائل مرتجلة. ولأن المعالجة حتمية ولا تستخدم خدمات خارجية، فإن المدخل نفسه ينتج دائمًا المخرج نفسه. يُسلسل كل سطر وفق القواعد القياسية لسلاسل JSON، ولا يقتصر الأمر على إحاطته بعلامتي اقتباس بعد استبدال بسيط. تُهرب علامات الاقتباس، وتُضاعف الشرطات العكسية الحرفية، وتُكتب محارف التحكم بتسلسلات JSON سليمة. يحتوي الحقل `result` على مستند JSON منسق وجاهز للشيفرة المصدرية أو الإعدادات أو طلب API أو بيانات الاختبار. ويحتوي `values` على المصفوفة المنطقية نفسها في صورة بيانات مهيكلة، كي لا تضطر التطبيقات الآلية إلى تحليل سلسلة JSON مرة أخرى. يتيح `line_count` مراجعة العدد بسرعة.
راجعوا الحدود قبل استعمال المصفوفة
إذا أردتم حذف المسافات أو إزالة العناصر الفارغة أو التكرارات أو الفرز أو تفسير الأرقام والقيم المنطقية بوصفها قيم JSON أولية، فنفذوا تلك التحويلات صراحة قبل هذه العملية أو بعدها. كل عنصر ناتج هو سلسلة نصية؛ فالسطر `42` يصبح السلسلة `"42"` لا العدد 42، وتظل `true` نصًا وليست قيمة منطقية. في التشغيل الآلي، قارنوا `line_count` بعدد السجلات المتوقع واستخدموا `values`؛ وللنسخ واللصق، استخدموا النص المنسق في `result` مباشرة.
حالات التكامل
تجهيز بيانات طلب API
حوّلوا المعرفات المنسوخة من تقرير إلى مصفوفة JSON جاهزة لنص الطلب من دون تهريب معطوب.
أسئلة تقنية
ما التكلفة؟
تكلفة كل عملية عبر API هي $0.002. ويعمل إصدار المتصفح محليًا ومجانًا.
هل تتحول الأرقام والقيم المنطقية إلى قيم JSON أولية؟
لا. يصبح كل سطر سلسلة JSON؛ وتظل `42` و`true` و`null` قيمًا نصية بين علامتي اقتباس.
كيف تُعالج علامات الاقتباس والشرطات العكسية؟
يهربها تسلسل JSON القياسي بصورة صحيحة، وكذلك علامات الجدولة ومحارف التحكم الأخرى.