ForHosting KIT · البيانات والملفات: تحويل وتنظيف

تحويل المفاتيح المنقطة إلى JSON متداخل

أعد بناء سجل متداخل من أسماء مسطحة منقطة: يعود user.contact.email إلى داخل contact الموجود داخل user، بينما يبقى active والنتيجة 42 في المستوى الأعلى. في المثال تُعالَج 5 مدخلات مسطحة. مجاني في متصفحك.

  • مجاني
  • يعمل في متصفحك
  • دون تسجيل
  • بياناتك لا تغادر جهازك
استخدمها من الويبAPIالبريدTelegramالتطبيق قريبًا

تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم

توسع هذه الأداة الحتمية كل مفتاح مفصول بنقاط، وتحافظ على السلاسل والأرقام والقيم المنطقية وnull والمصفوفات والكائنات، وتبلغ عن المسارات الملتبسة بدل الكتابة فوق البيانات بصمت. تفيد عند معالجة متغيرات البيئة ومخرجات النماذج والإعدادات وأدوات التحليل واستعلامات قواعد البيانات التي تنتج سجلات مسطحة يجب استعادتها قبل التحقق أو المعالجة.

حوّل المسارات المنقطة إلى مستند متداخل عادي

يُفسر كل اسم خاصية بوصفه مسارًا تفصل النقاط بين أجزائه. فمثلًا يصبح account.profile.name الخاصية name داخل profile الموجود بدوره داخل account. ويبقى المفتاح الذي لا يحتوي نقطة في المستوى الأعلى.

لا تُحوّل أنواع القيم: يظل الرقم رقمًا، وتظل false قيمة منطقية، وتبقى null كما هي، وتحافظ المصفوفات على ترتيبها ومحتواها. تتضمن النتيجة المستند المعاد بناؤه تحت json، كما تعرض keys عدد الخصائص المسطحة التي عولجت. تُعامل الأجزاء التي تبدو رقمية كمفاتيح كائن عادية لا كفهارس مصفوفة، لذلك لا تخمن الأداة شكل مجموعة لم يصرح به الإدخال.

يجعل ذلك الناتج ثابتًا للإعدادات وأسماء قواعد البيانات المستعارة وبيانات النماذج. العملية حتمية ولا تستخدم الشبكة ولا تعتمد على الإعدادات المحلية أو الوقت أو آثار ترتيب الإدراج.

اكشفوا المسارات المتعارضة قبل فقدان البيانات

تصبح إعادة البناء خطرة عندما يقرر مفتاح أن مسارًا ما قيمة نهائية، بينما يحتاج مفتاح آخر إلى المسار نفسه بوصفه كائنًا. كما ترفض التصادمات داخل الكائنات الصريحة. ويمكن توسيع كائن صريح بمسارات منقطة فرعية إذا لم تتعارض مع أعضائه الحالية، ولذلك يمكن أن يتعايش settings بوصفه كائنًا مع العضو الجديد settings.theme.

تُرفض المفاتيح الفارغة والنقاط في البداية أو النهاية والنقاط المزدوجة لأنها تنشئ أجزاء بلا أسماء. وتُحظر الأسماء __proto__ وprototype وconstructor في كل مستوى، بما في ذلك داخل الكائنات المقدمة، لتجنب آثار النماذج الأولية. تجعل هذه الفحوص الإخفاقات ظاهرة مبكرًا وتضمن مصدرًا واحدًا واضحًا لكل موضع في الناتج الناجح.

استخدموا النتيجة في عمليات الترحيل ومسارات التطبيقات

تظهر المفاتيح المسطحة كثيرًا عند الحدود بين الأنظمة. تصدر استعلامات SQL أسماء مستعارة مثل customer.address.city، وتسطح منصات السجلات والتحليلات الأحداث لفهرستها، وترمز نماذج HTML عناصر التحكم المجمعة بأسماء منقطة، وتمثل أنظمة النشر الإعدادات المنظمة بمتغيرات منفصلة. عندئذ يشير إخفاق التحقق إلى السجل الأصلي بدل السماح لبنية ناقصة بالانتقال إلى مراحل لاحقة.

في المعالجة الدفعية، استدعوا القدرة مرة لكل سجل مسطح لأن وحدة الفوترة عنصر واحد وكل استجابة تصف مستندًا واحدًا. النقاط داخل القيم النصية آمنة؛ أسماء الخصائص وحدها تُفسر كمسارات.

ما تكلفة الاستخدام؟

ويمكنكم أيضًا تنفيذ التحويل في المتصفح من هذه الصفحة.

هل تتحول أجزاء المسار الرقمية إلى مصفوفات؟

لا. يُحفظ كل جزء كمفتاح كائن لتجنب التخمين بشأن كونه فهرسًا أو معرفًا.

هل تبقى أنواع القيم كما هي؟

نعم. تُنسخ السلاسل والأرقام المحدودة والقيم المنطقية وnull والمصفوفات والكائنات دون تحويل للنوع.

هل يمكن أن يتضمن المفتاح جزء مسار فارغًا؟

لا. تُرفض المفاتيح الفارغة والنقاط المزدوجة والنقاط في البداية أو النهاية لأنها تنشئ مسارات ملتبسة.

ماذا يحدث إذا تعارض اسمان مثل user وuser.name؟

يُرفض الإدخال برسالة خطأ واضحة بدل الاحتفاظ بالاسم الذي ورد أخيرًا. فلا يمكن لموضع واحد أن يكون قيمة نهائية ومجموعة في الوقت نفسه، لذا يكون لكل موضع في النتيجة الناجحة مصدر واحد فقط.

كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.

POSThttps://api.kit.forhosting.com/data/unflatten-to-json

صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.

curl -X POST https://api.kit.forhosting.com/data/unflatten-to-json \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"flat":{"user.name":"Ada","user.contact.email":"ada@example.com","active":true}}'
{
  "flat": {
    "user.name": "Ada",
    "user.contact.email": "ada@example.com",
    "active": true
  }
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "data.unflatten_to_json",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.

لكل طلب$0.002

السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.

max_mb25
HTTPالرمزالمعنى
401unauthorizedمفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك.
402insufficient_balanceرصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة.
404unknown_typeنوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب.
429rate_limitedتجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة.

حوّلوا كائن JSON مسطحًا مثل {"account.name":"Ada"} إلى البنية المتداخلة التي يتوقعها تطبيقكم فعليًا.

حوّلوا المسارات المنقطة إلى مستند JSON عادي

قدموا كائن JSON واحدًا في الحقل flat. استخدموا قيم JSON صالحة وضعوا أسماء الخصائص بين علامتي اقتباس.

اكشفوا المسارات المتعارضة قبل فقدان البيانات

لا يستطيع إدخال يجعل user سلسلة ويضيف user.name أن يمثل الحقيقتين في بنية JSON واحدة. ترفض القدرة هذا الإدخال بخطأ invalid_input بدل اختيار آخر خاصية تمت زيارتها اعتباطًا.

استخدموا النتيجة في عمليات الترحيل ومسارات التطبيقات

ضعوا هذا التحويل مباشرة بعد قراءة تنسيق المصدر وقبل تطبيق مخطط JSON متداخل. يناسب مشغل المتصفح فحص سجل سريعًا، بينما تبدأ API من $0.002 عند الحاجة إلى الأتمتة. بما أن القيم تُنسخ من دون تحليل السلاسل أو استنتاج الأنواع، حللوا مسبقًا أي سلسلة تخزن JSON عن قصد.

استعادة أسماء الاستعلامات المستعارة

حوّلوا أعمدة مثل customer.name وcustomer.address.city إلى كائن customer المتداخل الذي تتوقعه API.

إعداد التهيئة للتحقق

أعيدوا بناء الإعدادات المتداخلة من المفاتيح المسطحة قبل تطبيق مخطط JSON أو القيم الافتراضية.

توحيد النماذج والأحداث

حوّلوا الأسماء المنقطة من النماذج والسجلات وصادرات التحليل إلى JSON عادي للمعالجة اللاحقة.

ماذا يحدث إذا كان مفتاح بادئة لمفتاح آخر؟

إذا احتوت البادئة قيمة ليست كائنًا يفشل الطلب بخطأ invalid_input لأن المسارين لا يمكن أن يتعايشا.

اطّلع على توثيق KIT الكامل ←