JSON إلى Python dataclass وTypedDict

حوّل JSON إلى فئات dataclass أو TypedDict في Python مع تلميحات الأنواع وحقول Optional وفئات متداخلة معرّفة بترتيب الاعتماد. مجاني داخل المتصفح.

تُرتَّب الأصناف بحيث تأتي التبعيات أولًا. القيمة الافتراضية للحقول الاختيارية None؛ ويستخدم إخراج TypedDict النوع NotRequired (Python 3.11+).

يعمل بالكامل في متصفحك. لا يتم رفع بياناتك أبدًا.

أدوات ذات صلة

عرض الكل

ما هو JSON إلى Python؟

ولّد فئات Python مكتوبة الأنواع من عيّنة JSON: إما فئات @dataclass أو تعريفات TypedDict. تتحول الكائنات المتداخلة إلى فئات خاصة بها تُصدر قبل الفئات التي تستخدمها ليُستورد الملف دون أخطاء.

كيفية استخدام JSON إلى Python

  1. الصق عيّنة JSON في إدخال JSON (أو انقر تحميل مثال / فتح ملف).
  2. اضبط اسم النوع الجذر (الافتراضي Root).
  3. اختر نمط الإخراج: @dataclass أو TypedDict.
  4. انسخ شيفرة Python الناتجة أو تنزيل كملف.

مثال

الإدخال
{"id":1,"name":"A","tags":["x"]}
الإخراج
from dataclasses import dataclass
from typing import List


@dataclass
class Root:
    id: int
    name: str
    tags: List[str]

متى تستخدم JSON إلى Python

استخدمه لإضافة تلميحات الأنواع لحمولات JSON في السكربتات وشيفرة FastAPI والاختبارات. لا تحوّل dataclass القواميس المتداخلة تلقائيًا؛ استخدم مكتبة مثل dacite أو pydantic لذلك، أو نمط TypedDict للإبقاء على القواميس العادية.

كيف يعمل JSON إلى Python

تُجتاز العيّنة تكراريًا ويجمع كل موضع الأنواع التي رآها. تُدمج مصفوفات الكائنات في نوع واحد: فالمفتاح الغائب من بعض العناصر يصبح اختياريًا، والمفتاح الذي يكون null في موضع ما يصبح قابلًا لـ null، والأعداد الصحيحة المختلطة بكسرية تصبح نوع الفاصلة العائمة، وأي خلط آخر للأنواع يعود إلى نوع ديناميكي. وتصبح الكائنات المتداخلة أنواعًا مسماة (PascalCase للمفتاح مع إفراد مفاتيح المصفوفات: orders ← Order) مع لواحق رقمية عند تعارض الأسماء. يستخدم ناتج Python الأنواع int وfloat وstr وbool وList[T] وOptional[T] لقيم null وAny للقيم الديناميكية. وفي dataclass تأتي الحقول المطلوبة أولًا وتحصل الاختيارية على = None؛ أما المفاتيح التي ليست معرّفات صالحة (أو كلمات محجوزة مثل class) فتُعاد تسميتها بنمط snake_case مع تعليق # JSON key. ويعلّم ناتج TypedDict المفاتيح الغائبة بـ NotRequired ويتحول إلى صيغة TypedDict("Name", {...}) الوظيفية عندما لا يكون مفتاح معرّفًا صالحًا.

حالات الاستخدام الشائعة

  • إضافة تلميحات الأنواع لاستجابة JSON API لأجل mypy أو Pyright
  • إنشاء dataclass لملف إعداد
  • وصف حمولات webhook بـ TypedDict
  • توليد نماذج أولية قبل الانتقال إلى pydantic

الأسئلة الشائعة

أي إصدار Python مطلوب؟

يعمل ناتج dataclass على Python 3.7 فما فوق. ويستخدم ناتج TypedDict الصنف NotRequired المتاح في وحدة typing من Python 3.11 (أو typing_extensions للإصدارات الأقدم).

لماذا أُعيدت تسمية بعض الحقول؟

مفاتيح مثل first-name أو class ليست أسماء سمات صالحة، فتصبح first_name / class_ مع تعليق يوضح مفتاح JSON الأصلي.

هل يمكنني تحميل JSON مباشرة في dataclass؟

يعمل Root(**data) مع البيانات المسطحة؛ أما الكائنات المتداخلة فتبقى قواميس ما لم تحوّلها بنفسك أو تستخدم مكتبة مساعدة.

الخطوات التالية المقترحة

منسّق JSON
نسّق JSON بمسافتين أو 4 مسافات أو Tab، مع ترتيب اختياري للمفاتيح، واعرف السطر والعمود الدقيقين لأخطاء الصياغة. يعمل داخل متصفحك.
أداة التهريب وإلغائه
أداة واحدة لتهريب السلاسل أو إلغاء تهريبها لـ JSON وJavaScript وHTML وXML ومكونات URL والتعابير النمطية وسلاسل SQL وCSS ووسائط الصدفة.
مصغّر JSON
صغّر JSON بإزالة كل المسافات غير المؤثرة مع الحفاظ على القيم وترتيب المفاتيح والأعداد الكبيرة. يعرض الحجم الموفَّر. مجاني داخل المتصفح.
باحث مسارات JSON
اعرض كل مسار في مستند JSON بصيغة JSONPath أو JavaScript أو jq، وانقر مسارًا لرؤية قيمته، أو اكتب مسارًا للبحث عنه. يعمل داخل متصفحك.
مقارنة JSON
قارن مستندي JSON بنيويًا: شاهد القيم المضافة والمحذوفة والمغيَّرة بحسب JSONPath مع تجاهل ترتيب المفاتيح والتنسيق. مجاني ويعمل داخل متصفحك.
استعلام JSON (JSONPath)
استعلم عن JSON بـ JSONPath: أحرف بدل وبحث تكراري وشرائح ومرشّحات مثل [?(@.price < 10)]. تتحدّث النتائج أثناء الكتابة. ليست صياغة jq.

استكشف المزيد من الفئات