JSON إلى Go Struct

حوّل JSON إلى هياكل Go بأسماء حقول مصدَّرة ووسوم json وأنواع مؤشرات لقيم null وomitempty اختياري. يعالج الكائنات والمصفوفات المتداخلة. مجاني.

الكائنات المتداخلة تصبح structs مستقلة؛ والقيم القابلة لأن تكون null تستخدم المؤشرات؛ والأعداد الصحيحة تصبح int64 والعشرية float64 والقيم المختلطة أو null فقط any.

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

أدوات ذات صلة

عرض الكل

ما هو JSON إلى Go Struct؟

ولّد تعريفات struct في Go بأسلوب اللغة المتعارف عليه من عيّنة JSON. تكون أسماء الحقول مصدَّرة بنمط PascalCase مع المختصرات المتعارف عليها في Go (ID وURL وAPI…)، ويحمل كل حقل وسم json:"…" بالمفتاح الأصلي، وتتحول الكائنات المتداخلة إلى هياكل مسماة منفصلة.

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

  1. الصق عيّنة JSON في إدخال JSON (أو انقر تحميل مثال / فتح ملف).
  2. اضبط اسم النوع الجذر (الافتراضي Root).
  3. أبقِ إضافة omitempty للحقول الاختيارية والقابلة لأن تكون null أو ألغِها.
  4. انسخ شيفرة Go الناتجة أو تنزيل كملف.

مثال

الإدخال
{"id":1,"name":"A","tags":["x"]}
الإخراج
type Root struct {
	ID   int64    `json:"id"`
	Name string   `json:"name"`
	Tags []string `json:"tags"`
}

متى تستخدم JSON إلى Go Struct

استخدمه لفك استجابات API بواسطة encoding/json. لا يولّد أنواعًا مخصصة لقيم الوقت أو التعدادات؛ غيّر string إلى time.Time بنفسك حيث يناسب.

كيف يعمل JSON إلى Go Struct

تُجتاز العيّنة تكراريًا ويجمع كل موضع الأنواع التي رآها. تُدمج مصفوفات الكائنات في نوع واحد: فالمفتاح الغائب من بعض العناصر يصبح اختياريًا، والمفتاح الذي يكون null في موضع ما يصبح قابلًا لـ null، والأعداد الصحيحة المختلطة بكسرية تصبح نوع الفاصلة العائمة، وأي خلط آخر للأنواع يعود إلى نوع ديناميكي. وتصبح الكائنات المتداخلة أنواعًا مسماة (PascalCase للمفتاح مع إفراد مفاتيح المصفوفات: orders ← Order) مع لواحق رقمية عند تعارض الأسماء. يستخدم ناتج Go النوع int64 للأعداد الصحيحة وfloat64 للكسرية وstring وbool وشرائح (slices) للمصفوفات ومؤشرًا (*T) للقيم القابلة لـ null وany للقيم الديناميكية أو التي هي null فقط. وتُحاذى الأعمدة كما في ناتج gofmt.

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

  • نمذجة استجابة REST للاستخدام مع json.Unmarshal
  • إنشاء هياكل إعداد من ملف JSON
  • تسريع كتابة كائنات نقل البيانات (DTO) لخدمة Go مصغّرة
  • مقارنة تسمية الحقول بين JSON وشيفرة Go

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

لماذا int64 بدل int؟

حجم int64 مضمون على كل منصة، مما يتجنب مفاجآت الفيض مع المعرّفات الكبيرة. غيّره إلى int إن فضّلت.

متى يُستخدم المؤشر؟

عندما تحتوي العيّنة على null لمفتاح ما يصبح الحقل *T ليمكن تمييز القيمة الغائبة عن القيمة الصفرية.

ماذا يفعل omitempty؟

يتخطى encoding/json الحقل عند التسلسل إذا كان بقيمته الصفرية. ويضيفه الخيار فقط للحقول الاختيارية أو القابلة لـ null في العيّنة.

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

منسّق 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.

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