حوّل عينة JSON إلى dataclasses أو نماذج Pydantic أو TypedDict في Python مع تلميحات الأنواع
يعمل في متصفحك. لا يُرسل أي شيء تكتبه إلى أي مكان. تم التحقق في 16 أكتوبر 2026.الصق عينة JSON واحصل على dataclasses أو نماذج Pydantic v2 أو TypedDict في Python مع تلميحات الأنواع. تصبح الأعداد الصحيحة int وأي كسر عشري يجعل الحقل float؛ والقيمة null أو المفقودة تصبح str | None مع None قيمةً افتراضية، وتشترك أنماط الأصناف الثلاثة في الاستنتاج نفسه.
تُرجمت هذه الصفحة آليًا من الأصل الإنجليزي. لم يراجع أي شخص هذه الترجمة بعد، لذا فالنسخة الإنجليزية هي التي يُعتمد عليها. اقرأ الأصل الإنجليزي
الصق عينة JSON، مثل استجابة API، في المربع الأيسر.
تظهر أصناف Python أثناء الكتابة: صنف لكل كائن، مع تلميحات أنواع مثل int وfloat وlist[str] وstr | None.
اختر dataclass أو Pydantic أو TypedDict، وأنواع Python 3.9 إن كان مشروعك أقدم من 3.10.
اضغط نسخ، أو تنزيل لحفظ models.py.
يقرأ Python ملفات JSON على شكل قواميس، والصنف المزوّد بتلميحات الأنواع هو ما يتيح للمحرر أو لمدقق الأنواع أو لـ Pydantic اكتشاف مفتاح مكتوب خطأً أو نوع غير صحيح. يكتب هذا المحوّل تلك الأصناف من عينة، فتتحول استجابة API طويلة إلى Python مُنمَّط بلصقة واحدة.
كيف تُختار الأنواع.
| قيمة JSON | نوع Python |
|---|---|
| "text" | str |
| true / false | bool |
| 42 (أعداد صحيحة فقط) | int |
| 4.5 (ظهر أي كسر عشري) | float |
| null، ومعها نوع آخر | str | None، أو Optional[str] |
| null فقط، أو أنواع مختلطة | Any |
| [ ... ] | list[...] |
| { } فارغ | dict[str, Any] |
| { ... } | صنف مستقل |
مصفوفات الكائنات. تُدمج كل كائنات المصفوفة في صنف واحد، فيبقى المفتاح الذي يظهر في بعضها فقط موجودًا، بنوع يسمح بـ None وبقيمة افتراضية None. يتشارك كائنان لهما المفاتيح والأنواع نفسها تمامًا صنفًا واحدًا.
ثلاثة أنماط. لا تحتاج dataclass إلى تثبيت أي شيء؛ وتُنقل الحقول ذات القيمة الافتراضية إلى ما بعد غيرها، لأن Python يرفع TypeError خلاف ذلك. تستخدم نماذج Pydantic سمات بصيغة snake_case مع Field(alias=...) للمفاتيح المكتوبة بشكل مختلف، مثل userName أو first-name. ويحتفظ TypedDict بالمفاتيح كما هي ويَسِم المفاتيح العارضة بـ NotRequired.
الترتيب والأسماء. تُكتب الأصناف بدءًا بالأصناف الفرعية، فيكون كل اسم معرّفًا قبل استخدامه. وتصبح الكلمة المحجوزة مثل class بصيغة class_، ويحصل المفتاح الذي قد يحجب نوعًا، مثل list، على الشرطة السفلية نفسها.
فُحص كل نمط بتشغيل الناتج في CPython مع Pydantic 2 والتحقق من العينة. لا شيء مما تلصقه يغادر المتصفح.
الصق عينة JSON في المحوّل فتظهر أصناف Python بجانبها، صنف لكل كائن، مع تلميح نوع على كل سمة. اختر dataclass للأصناف البسيطة، أو Pydantic للتحقق، أو TypedDict لمواصلة العمل بالقواميس العادية، ثم انسخ الوحدة إلى مشروعك.
تناسب dataclass البيانات التي تبنيها بنفسك ولا تحتاج إلى أي مكتبة. ويناسب Pydantic البيانات الآتية من الخارج، مثل استجابات API، لأنه يفحص كل قيمة ويحوّل الكائنات المتداخلة نيابة عنك. أما TypedDict فيضيف تلميحات الأنواع فقط إلى القاموس الذي يعيده json.loads، فلا يكلّف شيئًا وقت التشغيل.
تُكتب سمات Pydantic بصيغة snake_case كما تطلب PEP 8، مع Field(alias="userName") كي يظل التحقق يقرأ المفتاح الأصلي. ويحتفظ TypedDict بكل مفتاح كما هو، وينتقل إلى الصيغة الوظيفية عندما لا يكون المفتاح اسمًا صالحًا. وتحتفظ dataclass بالمفاتيح التي هي أسماء صالحة وتدوّن ملاحظة عن الباقي.
المفتاح الذي كان null في العينة، أو المفقود من بعض كائنات المصفوفة، قد يحمل None، لذا يسمح تلميحه بذلك. وتحصل المفاتيح المفقودة أيضًا على None قيمةً افتراضية، وفي dataclass تنتقل هذه الحقول إلى النهاية، لأن Python يرفض حقلًا بلا قيمة افتراضية بعد حقل له قيمة افتراضية.
تحتاج الأنواع الافتراضية، مثل list[str] وstr | None، إلى Python 3.10 أو أحدث. فعّل أنواع Python 3.9 للحصول على Optional وList من الوحدة typing بدلًا منها. ويأتي NotRequired الخاص بـ TypedDict من typing_extensions، وهو موجود في typing نفسها منذ Python 3.11.
لا. يجري التحويل في متصفحك دون أي طلب إلى خادم، ولا يُحفظ JSON، فتبقى استجابات API التي تحمل رموز وصول أو بيانات شخصية على جهازك. أغلق التبويب ولن يبقى شيء.
تتغير المعدلات والقواعد؛ راجع المصدر قبل الاعتماد على أي رقم.
هل ما زلت عالقًا؟ اسأل عن محوّل JSON إلى أصناف Python ويمكن لأي شخص يعرف الإجابة أن يجيب. لا حاجة إلى حساب.