تقنية

JSON في بايثون: الاسم المكرر قد يخفي القيمة الأولى

القاموس يخفي قيمة إكس الأولى والأزواج تحفظها
شرطة الخانة تعني غياب زوج ثالث في القاموس. [1] [2]

افحص الأسماء أولًا. [1] [2]

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

json.loads يحتفظ بآخر قيمة للاسم المكرر افتراضيًا؛ المثال يعيد x=9. [1] [2]

  • قيمة x الأولى، 4، تختفي من القاموس. [1] [2]
  • التكرار وحده لا يرفع خطأ هنا. [1] [2]
  • object_pairs_hook=list يحفظ الأزواج الثلاثة بترتيبها، ومنها قيمتا x. [1] [2]
  • ناتج الخطاف قائمة أزواج؛ لا تسترجع 4 من القاموس الافتراضي وحده. [1] [2]
  • اختبرنا 3.12.14 وكائنًا مسطحًا؛ لا نعمم على قارئات أخرى أو التعشيق. [1] [2]

المثال

import json
raw='{"x":4,"x":9,"y":2}'
print(json.loads(raw))
print(json.loads(raw,
    object_pairs_hook=list))

[1] [2]

الأول: dict بقيمتي x=9 وy=2. الثاني: [('x',4),('x',9),('y',2)]. [1] [2]

القيمة التي ضاعت

نجاح القراءة لا يثبت تفرد الأسماء. [1] [2]

الأزواج

مع الخطاف، القائمة تحفظ تكرار الاسم وتغير نوع الناتج؛ افحصها قبل تحويلها إلى قاموس. [1] [2]

نوعا الناتج وعدد عناصرهما في المثال
القاموس مدخلان، والقائمة ثلاثة أزواج. [1] [2]

النطاق

هذا سلوك القراءة في المثال، وليس قاعدة لقبول التكرار لدى كل محلل. [1] [2]

المراجع

  1. Python: أسماء JSON والخطاف
  2. CPython 3.12.14: محلل الكائن
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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