تقنية

JSON في بايثون: هل تعود مفاتيح الأعداد بأعداد؟

مفتاح عددي يصبح اسمًا نصيًا
بعد الترميز. [1] [2]

حفظ القيمة لا يثبت حفظ نوع المفتاح. [1] [2]

الخلاصة السريعة

لا؛ يعود مفتاحنا العددي نصًا بعد القراءة. [1] [2]

  • مدخلنا القاموس {4:"bud"}. [1] [2]
  • النص المرمز {"4": "bud"}. [1] [2]
  • المفتاح المعاد من نوع str. [1] [2]
  • المقارنة بالأصل تعطي False؛ الأصل لم يتغير. [1] [2]
  • مدخل {"4":"bud"} يعطي True في التحكم؛ قاموس مسطح بإعدادات افتراضية في 3.12.14. [1] [2]

المثال

import json
original={4:"bud"}
text=json.dumps(original)
restored=json.loads(text)
print(text)
print(restored==original)
key=next(iter(restored))
print(type(key).__name__)

[1] [2]

الاسم ونوعه

الأسماء في JSON نصوص. بقيت القيمة bud، لكن المفتاح 4 صار "4"؛ لذلك لا يساوي القاموس المعاد أصلنا. قراءة المخرج لا تستعيد تلقائيًا نوع المفتاح السابق. [1] [2]

مفتاح نصي ومقارنة مختلفة عن الأصل
بعد القراءة. [1] [2]

التحكم والنطاق

بمدخل {"4":"bud"} تصبح المقارنة True. هذا التحكم يبدأ بمفتاح نصي. نفحص الإعدادات الافتراضية وقيمة نصية واحدة؛ لا نعمم على كل تحويل أو محلل مخصص. [1] [2]

المراجع

  1. Python 3.12: JSON keys
  2. CPython 3.12.14: JSONEncoder
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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