{ } منسق JSON
تجميل وضغط والتحقق من صحة وإصلاح JSON على الفور
لماذا لا تختلف وظائف التنسيق والتصغير والتحقق أبدا حول ما هو مكسور
محلل واحد، ثلاث مهام. تقوم وظائف التنسيق والتصغير والتحقق أولا بتمرير النص الخاص بك إلى نفس محلل JSON الصارم المدمج في متصفحك، لذلك فإن أي شيء يفشل في أحدهم يفشل في الثلاثة. إنها تختلف فقط في ما يحدث بمجرد نجاح التحليل.
{"a":1,"b":[2,3]}{
"a": 1,
"b": [
2,
3
]
}| الزر | ما يفعله بمجرد نجاح تحليل النص الخاص بك |
|---|---|
| تنسيق | يعيد كتابة القيمة المحللة بمسافة بادئة بمقدار مسافتين وفاصل أسطر واحد لكل عنصر. النمط ثابت، ولا يوجد خيار لاختيار عرض مختلف أو نمط أقواس. |
| تصغير | يعيد كتابة نفس القيمة المحللة بدون أي مسافات بيضاء على الإطلاق، مع دمج كل شيء في سطر واحد. |
| تحقق | يترك النص الخاص بك تماما كما تم كتابته ويبلغ عن النجاح، أو رسالة الخطأ الدقيقة للمحلل، بما في ذلك موضع الحرف حيث تعطل التحليل. |
تفرض الوظائف الثلاث قواعد متطابقة مع عدم وجود مرونة، لأنها تعتمد جميعا على نفس التنفيذ الصارم: أسماء الخصائص وقيم السلاسل النصية تحتاج إلى علامات اقتباس مزدوجة، وليس علامات اقتباس مفردة أبدا؛ فاصلة زائدة بعد العنصر الأخير في كائن أو مصفوفة تعتبر فشلا ذريعا، وليست خيارا في النمط؛ ولا يوجد أي دعم للتعليقات بأي شكل من الأشكال. هذه هي مواصفات JSON تعمل بالضبط كما تم تصميمها، وليست هذه الأداة التي يصعب إرضاؤها بشكل غير عادي.
الفجوة التي تربك الناس هي تلك الموجودة بين JSON وكائن JavaScript الحرفي. رمز مثل {name: 'Alice', tags: ['a', 'b'],} يعمل بشكل جيد داخل نص برمجي، حيث تسمح JavaScript بمفاتيح بدون علامات اقتباس، وعلامات اقتباس مفردة، وفاصلة زائدة. لا شيء من هذا يعد JSON صالحا. الصقه هنا وسيقوم التنسيق والتصغير والتحقق برفضه بنفس الطريقة، لأن بناء جملة JavaScript الصالح و JSON الصالح يتبين أنهما لغتان مرتبطتان ولكنهما ليستا متطابقتين.
نفس المحلل الموجود في وحدة تحكم متصفحك. رسالة الخطأ التي تظهرها لك أداة التحقق هي الرسالة الحرفية التي سيطلقها استدعاء JSON.parse() داخل رمز التطبيق الخاص بك، وليست نسخة معاد صياغتها. إذا قمت في أي وقت مضى بتصحيح خطأ تحليل في وحدة تحكم المتصفح، فأنت تعرف بالفعل كيف تقرأ تلك التي تظهرها هذه الأداة.
لماذا يمكن أن يكون "JSON الصالح" هو البيانات الخاطئة
يتحقق التحقق من القواعد، وليس المعنى. يؤكد أن أقواسك وعلامات الاقتباس والفواصل في الأماكن الصحيحة. ليس لديه أي فكرة عما إذا كان الحقل المطلوب مفقودا أو إذا وصل رقم كسلسلة نصية.
{"a": 1 "b": 2}Expected ',' or '}' after property value in JSON at position 8 (line 1 column 9)تشير هذه الرسالة إلى الحرف الدقيق الذي استسلم عنده المحلل: مباشرة بعد 1، حيث كان يتوقع فاصلة أو قوس إغلاق ووجد بدلا من ذلك بداية خاصية أخرى. عادة ما يكون العد إلى ذلك الموضع في محرر نصوص، أو استخدام أمره الخاص بالانتقال إلى الحرف، أسرع من قراءة الحمل بأكمله بحثا عن فاصلة مفقودة بالعين المجردة.
ما لا يمكن لوظيفة التحقق أن تخبرك به هو ما إذا كانت البيانات صحيحة بمجرد تحليلها. يمكن أن تكون الاستجابة بصيغة JSON مثالية من الناحية النحوية ومع ذلك تفتقر إلى حقل يتوقعه الرمز الخاص بك، أو تحمل رقما مثل السلسلة "42" بدلا من الرقم 42، أو تخزن نفس التاريخ بثلاثة تنسيقات مختلفة عبر ثلاثة سجلات مختلفة. لا شيء من ذلك يمثل مشكلة نحوية، لذلك لا ينتج أي من ذلك خطأ هنا.
| تكتشفه أداة التحقق | ليس لدى أداة التحقق رأي فيه |
|---|---|
| قوس مفقود أو غير متطابق | حقل مطلوب غائب ببساطة |
| فاصلة مفقودة بين خاصيتين | سلسلة نصية موجودة حيث كان متوقعا رقم |
| مفتاح بدون علامات اقتباس أو بعلامات اقتباس مفردة | نفس الحقل المنسق بشكل مختلف عبر السجلات |
| فاصلة زائدة أو تعليق رمزي | البيانات غير المتسقة داخليا ولكنها صالحة بشكل فردي |
بناء الجملة والمعنى هما فحصان منفصلان. تقوم هذه الأداة فقط بإجراء الفحص الأول. بالنسبة للثاني، يعد مدقق المخطط أو فحص النوع الخاص بتطبيقك هو الأداة المناسبة، حيث إن الحكم على ما يجب أن تعنيه القيمة يتطلب معرفة شكل البيانات الخاصة بك.
لماذا يتعطل زر الإصلاح عند وجود الفواصل العليا داخل قيم السلاسل
لا يستطيع زر الإصلاح التمييز بين الفاصلة العليا وعلامة الاقتباس. يقوم باستبدال كل علامة اقتباس مفردة في النص الخاص بك بعلامة اقتباس مزدوجة، لذلك يتم قراءة الفاصلة العليا في اختصار مثل "it's" الموجودة داخل قيمة السلسلة النصية كعلامة اقتباس إغلاق، مما يؤدي عادة إلى كسر JSON الذي كان يحاول إصلاحه.
{name: "Alice", active: true, nickname: undefined,}{
"name": "Alice",
"active": true,
"nickname": null
}وراء هذه النتيجة تسلسل ثابت من أربع عمليات بحث واستبدال، يتم تشغيلها بهذا الترتيب في كل مرة، سواء كان النص الخاص بك يحتاج فعليا إلى كل واحدة منها أم لا:
| الخطوة | ما تقوم بإعادة كتابته |
|---|---|
| 1 | كل ' تصبح "، في كل مكان في النص. |
| 2 | يتم حذف الفاصلة الموجودة قبل رمز إغلاق } أو ]. |
| 3 | الكلمة المجردة متبوعة بنقطتين، مثل name:، يتم تغليفها بعلامات اقتباس مزدوجة، ولكن فقط إذا كانت تبدأ بحرف أو شرطة سفلية. |
| 4 | تصبح الكلمة الحرفية undefined كلمة null. |
الخطوة الأولى هي استبدال عالمي أعمى، وليس محللا يفهم أين تبدأ السلسلة وتنتهي، وهذا بالضبط ما يجعل الفواصل العليا خطيرة. قم بتغذيته ب {'name': 'it's a test'} وستقوم الخطوة الأولى بتحويل كل علامة اقتباس مفردة إلى علامة اقتباس مزدوجة بدون استثناءات، مما ينتج عنه {"name": "it"s a test"}. أصبحت الفاصلة العليا داخل "it's" الآن حرف اقتباس يغلق السلسلة قبل حرفين من موعدها، تاركة نصا تائها s a test" لم يعد ينتمي إلى أي شيء.
عادة ما يفشل الإصلاح تماما بدلا من إفساد بياناتك بصمت. يتسبب هذا النص المتبقي التائه دائما تقريبا في كسر التحليل مرة ثانية، لذلك يبلغ الإصلاح أنه تعذر إصلاح هذا JSON تلقائيا ويترك محتوى المحرر الخاص بك كما هو، بدلا من إعادة JSON بسلسلة نصية مشوهة بهدوء. التكلفة الحقيقية هي وقتك، وليست بياناتك: لا يزال يتعين عليك وضع علامات اقتباس على هذه القيمة يدويا، لأن عملية البحث والاستبدال العمياء لا تمتلك طريقة لتمييز الفاصلة العليا عن المحدد.
أداة الإصلاح ضيقة النطاق أيضا عن قصد. لا يمكنها إدراج فاصلة مفقودة بين خاصيتين، ولا يمكنها إزالة تعليق رمزي، ولا يمكنها تحويل مصفوفة مغلقة بنوع قوس خاطئ، ولا يمكنها ملاحظة أو حل مفتاح متكرر، لأن أيا من هذه المشاكل لا يتطابق مع أي من تعبيراتها العادية الأربعة. إذا فشل الإصلاح، فإن موقع الخطأ الدقيق لوظيفة التحقق عادة ما يكون الطريق الأسرع نحو الإصلاح اليدوي.
لا تفعل وظيفة الإصلاح شيئا للنص الذي يتم تحليله بنجاح بالفعل. انقر عليها على JSON الصالح بالفعل وسيظهر رسالة "صالح بالفعل" ويترك النص الخاص بك تماما كما كان، بما في ذلك التنسيق. انقر فوق تنسيق بدلا من ذلك إذا كنت تريد إعادة تنسيق JSON صالح.
ماذا يحدث عندما يحتوي JSON الخاص بك على نفس المفتاح مرتين
التواجد الأخير يفوز بصمت. لا تمنع مواصفات JSON مفتاحا مكررا، ويقوم محلل هذه الأداة بحله عن طريق الاحتفاظ فقط بقيمة النسخة التي تظهر أخيرا، بدون خطأ وبدون تحذير.
{"name": "Alice", "name": "Bob"}{
"name": "Bob"
}انقر فوق التحقق على هذا الإدخال وسيبلغ عن JSON صالح، وهو أمر صحيح من الناحية الفنية: تنص المواصفات فقط على أنه "يجب" على التطبيقات التعامل مع الأسماء على أنها فريدة، وترك السلوك الفعلي للبرنامج الذي يقوم بالتحليل. يحتفظ محلل هذه الأداة، وهو نفسه المدمج في المتصفح، بآخر قيمة يراها لمفتاح متكرر ويتجاهل بصمت كل قيمة سابقة. يختفي "Alice" في اللحظة التي ينتهي فيها التحليل، مع عدم وجود أي شيء في المخرجات لإظهار أنه كان هناك على الإطلاق.
يرث التنسيق والتصغير نفس السلوك، حيث يقوم كلاهما بتحليل النص الخاص بك قبل إعادة كتابته. قم بتشغيل أي منهما على JSON بمفتاح مكرر وتكون النسخة الإضافية قد اختفت بالفعل بحلول الوقت الذي ترى فيه النتيجة. من السهل تفويت هذا عندما يكون التكرار عرضيا، وهو خطأ حدث أثناء دمج مقتطفي JSON يدويا، على سبيل المثال، بدلا من شيء كنت تقصد كتابته.
عرض الشجرة هو أسرع طريقة لاكتشاف أحدهم. نظرا لأن المفتاح المكرر ينهار إلى إدخال واحد قبل أن يصل إلى الشجرة، فإن المفتاح الذي كنت تتوقع رؤيته معروضا مرتين ولكنك تراه مرة واحدة فقط هو إشارة معقولة للعودة والتحقق من المصدر بحثا عن تكرار عرضي.
لماذا يتغير رقم تعريف طويل بعد النقر فوق تنسيق
ليس لدى JSON حد لحجم الأعداد الصحيحة، لكن نوع أرقام JavaScript لديه. الأرقام التي تتجاوز 9,007,199,254,740,991 لا يمكن تخزينها بدقة، لذلك يتم تقريب المعرف الطويل بصمت إلى أقرب قيمة تناسبه، دون أي شيء لتحذيرك من حدوث ذلك.
{"id": 900719925474099123}{
"id": 900719925474099100
}كل رقم في مستند JSON الذي يتم تحليله بواسطة هذه الأداة، أو بواسطة أي محرك JavaScript، يتم تخزينه كقيمة النقطة العائمة 64 بت. يمكن لهذا التنسيق أن يمثل كل عدد صحيح بدقة فقط حتى 9,007,199,254,740,991، وهو حد تحدده اللغة نفسها. قم بتغذيته بعدد صحيح أكبر ويقوم بتقريبه إلى أقرب قيمة يمكن للتنسيق الاحتفاظ بها فعليا. أعلاه، يتم إرجاع معرف مكون من 18 رقما ينتهي بـ ...099123 وينتهي بـ ...099100. كلاهما قبل وبعد صحيح تماما بتنسيق JSON وفقا لقواعد المواصفات؛ تم تغيير الأرقام فقط بصمت.
هذا يهم بشكل كبير للمعرفات الصحيحة الكبيرة التي تظهر باستمرار في الأنظمة الحقيقية: معرفات نمط ندفة الثلج في Discord و Twitter، وبعض المفاتيح الأساسية لقواعد البيانات، وبعض القيم المالية أو عن بعد ممثلة كأعداد صحيحة كبيرة بدلا من السلاسل. يقوم كل من التنسيق والتصغير والإصلاح برحلة ذهاب وإياب لبياناتك من خلال دورة تحليل وإعادة كتابة، لذلك يمكن لأي من الثلاثة إفساد معرف بهذه الطريقة بهدوء، وليس فقط التنسيق.
تعامل مع المعرفات التي تتجاوز 15 أو 16 رقما على أنها غير آمنة للتشغيل من خلال هذه الأداة. إذا كانت الحمولة تحتوي على معرفات بهذا الطول، فتحقق من الأرقام بالعين قبل وبعد، أو الأفضل من ذلك، اعمل مع مكتبة JSON مبنية للأعداد الصحيحة الدقيقة التعسفية، أو مكتبة تقرأ تلك الحقول المحددة كسلاسل نصية. المخطط الذي يمثل المعرفات الكبيرة كسلاسل مقتبسة لا يصل أبدا إلى هذا الحد على الإطلاق، لأن حد الدقة ينطبق فقط على النوع الرقمي.
لماذا يمكن للتنسيق إعادة ترتيب مفاتيح الكائن الخاص بك بصمت
المفاتيح التي تبدو وكأنها أرقام تقفز إلى المقدمة. أي مفتاح مثل "2" أو "10" يتم نقله قبل كل مفتاح سلسلة عادي ويتم فرزه بترتيب رقمي تصاعدي، بغض النظر عن المكان الذي كتبته فيه في الأصل.
{"b": 1, "10": 2, "a": 3, "2": 4}{
"2": 4,
"10": 2,
"b": 1,
"a": 3
}انظر عن كثب إلى هذه النتيجة: ينتقل "2" و "10" إلى الأمام تماما، متقدمين على "b" على الرغم من كتابة "b" أولا، ويهبطان بترتيب رقمي، 2 قبل 10، وليس الترتيب الذي ظهرا به في المصدر. تحتفظ مفاتيح السلسلة العادية "b" و "a" بترتيبها النسبي الأصلي خلف تلك ذات المظهر الرقمي.
هذا سلوك قياسي محدد بواسطة مواصفات لغة JavaScript لكيفية تعداد مفاتيح الكائنات، وليس ميزة غريبة خاصة بهذه الأداة. أي مفتاح يحلل كعدد صحيح غير سالب، بدون صفر بادئ، ولا نقطة عشرية، ولا إشارة، يتم التعامل معه كفهرس يشبه المصفوفة لأغراض الترتيب ويتم فرزه رقميا قبل كل شيء آخر. من السهل تفويت هذا حتى يحدث لبيانات لم تكن تتوقع أن يتغير شكلها على الإطلاق.
أين يؤثر هذا فعليا: JSON حيث تصادف أن تكون مفاتيح الكائنات عبارة عن سلاسل رقمية تستخدم كفهرس، أو معرفات، أو بنية تشبه المصفوفة ممثلة ككائن، أو صفوف جدول بيانات مشفرة برقم الصف. إذا لم تستخدم بياناتك مفاتيح تبدو رقمية أبدا، فإن التنسيق لا يعيد ترتيب أي شيء أبدا ويتم الحفاظ على ترتيب الإدراج تماما كما تم كتابته.
لماذا يجب ألا تقوم أبدا بإنشاء JSON مصغر في Git
يقوم الملف المصغر بتحويل كل تغيير إلى فرق في سطر كامل. نظرا لأن الملف بأكمله يعتبر تقنيا سطرا واحدا، فإن تغيير قيمة واحدة في أي مكان فيه يجعل أداة مقارنة الملفات تبلغ أن السطر بأكمله قد تغير، مما يخفي ما تم نقله فعليا.
{"id":42,"active":true,"tag":"draft"}{
"id": 42,
"active": true,
"tag": "draft"
}JSON المصغر موجود للآلات. يؤدي تجريد كل مسافة وفاصل سطر إلى توفير بايتات حقيقية من حمولة يتم إرسالها عبر شبكة بشكل متكرر، وهو أمر مهم بالنسبة لاستجابة واجهة برمجة تطبيقات عامة يتم تقديمها ملايين المرات ولا يهم تقريبا بالنسبة لملف تكوين تتم قراءته مرة واحدة عند بدء التشغيل. إن JSON المنسق بشكل جميل موجود من أجل الأشخاص: خاصية واحدة لكل سطر مع مسافة بادئة متسقة هي ما يجعل ملف التكوين الكبير أو استجابة واجهة برمجة التطبيقات قابلين للقراءة بشكل فعلي.
من السهل التقليل من تكلفة التحكم في الإصدار عند القيام بذلك بالعكس. قم بتخزين النسخة المصغرة من هذا الكائن في Git وقم بتغيير "tag": "draft" فقط إلى "tag": "final"، وسيرى المراجع أن السطر بأكمله تم وضع علامة عليه كمتغير، لأن الملف بأكمله عبارة عن سطر واحد. لا يمكنهم معرفة من الفرق وحده ما إذا كان حقل واحد قد تغير أو تمت إعادة كتابة البنية بأكملها. قم بتخزين النسخة المنسقة بدلا من ذلك وينتج عن التعديل نفسه فرق مكون من سطر واحد يشير مباشرة إلى "tag".
يضاعف سلوك إعادة ترتيب المفاتيح الذي تم تناوله أعلاه من هذه المشكلة. يمكن لأداتين تقومان بتنسيق نفس البيانات الأساسية بشكل مختلف قليلا، أو كائن يصادف أنه يحتوي على مفاتيح سلسلة رقمية، إنتاج فرق يبدو مثيرا للقلق على الرغم من أن البيانات الموجودة تحته لم تتغير بشكل ملموس.
احتفظ بمصدر منسق، وقم بإنشاء بناء مصغر. إن التعديل المباشر لـ JSON المصغر، ثم محاولة مراجعة الفرق، يحارب التنسيق في كل خطوة. احتفظ بالنسخة القابلة للقراءة تحت تحكم الإصدار وقم بإنتاج النسخة المصغرة كخطوة بناء بدلا من ذلك.
كيفية العثور على حقل خاطئ واحد في استجابة متداخلة بعمق
يحول عرض الشجرة JSON المتداخل إلى مخطط قابل للطي. يمكن طي كل كائن ومصفوفة بشكل مستقل ويتم وضع علامة عليها بعدد المفاتيح أو العناصر التي تحتوي عليها، بحيث يمكنك طي ما تفهمه بالفعل والتركيز على الفرع الوحيد الذي تبحث فيه فعليا.
تقوم الشجرة بتحليل JSON الخاص بك بنفس الطريقة الصارمة التي تقوم بها وظيفة التحقق، لذلك فهي تحتاج إلى مدخلات صحيحة لغويا لتعمل على الإطلاق. انقر فوقها على JSON المعطل وستحصل على نفس خطأ المحلل الذي ستظهره وظيفة التحقق، وليس شجرة جزئية مبنية من أي شيء حدث تحليله.
| نوع القيمة | كيف تظهر في المخطط التفصيلي |
|---|---|
| سلسلة نصية | تظهر باللون الأخضر، ومقتبسة، ومسماة string |
| رقم | تظهر باللون الأزرق، وغير مقتبسة، ومسماة number |
| قيمة منطقية | تظهر باللون الكهرماني، ومسماة boolean |
| فارغ | يظهر بخط مائل باللون الرمادي، ومسمى null |
تحمل فروع الكائن والمصفوفة تسمياتها الخاصة بدلا من اسم النوع: يوضح الكائن عدد المفاتيح التي يمتلكها، وتوضح المصفوفة عدد العناصر، ويتم تحديث كلا التعدادين في كل مستوى من مستويات التداخل. يؤدي لصق {"user":{"id":1,"tags":["a","b"]}} إلى توفير كائن جذر يحتوي على مفتاح واحد، والذي يتوسع إلى كائن يحتوي على مفتاحين، أحدهما مصفوفة تحتوي على عنصرين. يمكن طي كل جزء من هذه الأجزاء بمفرده، لذا فإن الاستجابة التي تحتوي على عشرات الكائنات المتداخلة لا تجبرك على التمرير عبرها جميعا في وقت واحد.
تبرز عدم تطابق النوع بشكل مرئي في الشجرة التي تختبئ في نص عادي. من السهل قراءة رقم مقتبس كان يجب أن يكون رقميا، أو رقم فارغ يقع في المكان الذي كنت تتوقع فيه سلسلة فارغة، متجاوزا إياه في جدار من JSON المنسق ولكنه يبرز على الفور بمجرد ترميزه بالألوان حسب النوع في مخطط موسع.
ست طرق يستخدم بها الأشخاص هذه الأداة فعليا
تصحيح أخطاء استجابة واجهة برمجة تطبيقات فشل تحليلها
الصق نص الاستجابة وانقر فوق تحقق أولا. عادة ما يكون الموضع الدقيق للحرف الذي يبلغ عنه كافيا للانتقال مباشرة إلى القسم المشوه، سواء كان فاصلة مفقودة أو حرفا غير مهرب، بدلا من قراءة الحملة بأكملها بالعين المجردة.
تنظيف كائن حرفي تم نسخه من كود JavaScript المصدري
غالبا ما يستخدم الرمز المنسوخ من ملف تطبيق علامات اقتباس مفردة ويتخطى الاقتباس من المفاتيح تماما، وكلاهما يعتبر JavaScript صالحا، ولكن لا يعتبر أي منهما JSON صالحا. يتعامل الإصلاح مع كليهما تلقائيا للحالات المباشرة. قم بتشغيل التحقق بعد ذلك للتأكيد على أن الإصلاح قد أنتج فعليا JSON قابلا للتحليل بدلا من افتراض أنه نجح.
تقليص ملف تكوين قبل شحنه
يستفيد الملف الذي يتم تحريره يدويا من قابلية قراءة التنسيق. يستفيد نفس الملف المجمع في الإنتاج من مساحة التصغير الأصغر. احتفظ بنسخة مصدر منسقة وقم بإنشاء النسخة المصغرة في وقت البناء بدلا من التحرير اليدوي لملف سطر واحد غير قابل للقراءة كلما دعت الحاجة إلى تغيير قيمة.
مراجعة حملة غير مألوفة قبل كتابة نوع لها
قبل كتابة محلل أو تعريف نوع مقابل استجابة واجهة برمجة تطبيقات جديدة، قم بتمرير عينة من خلال عرض الشجرة لرؤية شكلها الفعلي: أي الحقول عبارة عن كائنات مقابل مصفوفات، وأي القيم فارغة على الإطلاق. سجل شاذ، حقل عبارة عن سلسلة نصية في كل مكان باستثناء كائن واحد حيث يكون عبارة عن رقم، يبرز في شجرة موسعة بشكل أسرع بكثير مما يبرز في جدار من النص المصغر.
الالتزام بفروق قابلة للقراءة بدلا من ضجيج السطر الكامل
احتفظ بتركيبات JSON وملفات التكوين المنسقة بدلا من تصغيرها قبل أن تدخل في التحكم في الإصدار. ينتج ملف بخاصية واحدة في كل سطر فرقا يوضح بالضبط الحقل الذي تم تغييره؛ يُظهر الملف المصغر الملف بأكمله على أنه تم تغييره في اللحظة التي تتغير فيها أي قيمة واحدة.
حماية حقول المعرفات الكبيرة من التقريب الصامت
إذا كانت الحملة تحمل معرفات نمط ندفة الثلج أو مفاتيح قواعد بيانات كبيرة كأرقام خام، فلا تقم برحلة ذهاب وإياب لذلك الحقل المحدد من خلال وظائف التنسيق أو التصغير أو الإصلاح دون التحقق من الأرقام بعد ذلك. حيثما تتحكم في المخطط، فإن تخزين المعرف كسلسلة نصية مقتبسة يتجنب حد الدقة تماما، لأن حد 2^53 ينطبق فقط على نوع JSON الرقمي.
الأسئلة الشائعة
أدوات ذات صلة
🔒 خاص وآمن 100%
تتم جميع عمليات معالجة JSON محليًا في متصفحك-لا يتم رفع بياناتك أبدًا. آمن لمفاتيح API والملفات الإعدادية والبيانات الحساسة.