OpenReplay Logo
12k
12k

محوّل JSON إلى Go

حوّل أي عيّنة JSON إلى بُنى Go مُصنّفة مع علامات json — تتم المعالجة محليًا في متصفحك، ولا يُرفع شيء.

تتم المعالجة محليًا

حول هذه الأداة

بُنى Go هي الطريقة المعتادة لنمذجة JSON في Go: يحمل كل حقل مُصدَّر علامة بنية `json:"..."` تستخدمها حزمة `encoding/json` المعيارية لتسلسل البيانات وفك تسلسلها. يحلّل هذا المحوّل عيّنة JSON، ويستنتج نوع Go لكل قيمة — `int` للأعداد الصحيحة، و`float64` للأعداد العشرية، و`string` و`bool` و`interface{}` لـ null أو المجهول، و`[]T` للمصفوفات — ويُصدر أسماء حقول مُصدَّرة بنمط PascalCase مع الإبقاء على المفتاح الأصلي في العلامة. وتُدمَج مصفوفات الكائنات في شكل واحد بحيث تتضمّن البنية المُولَّدة كل مفتاح يُرى عبر العناصر.

استخدمه لإنشاء هيكل أنواع الطلب والاستجابة لواجهة برمجة تطبيقات HTTP، أو لنمذجة ملف إعداد أو حمولة webhook، أو لتحويل مستند عيّنة من مخزن NoSQL إلى بُنى مُصنّفة يمكنك لصقها مباشرةً في حزمتك. سمِّ البنية الجذرية، وبدّل تشغيل `,omitempty` على العلامات، واختر بين أنواع مُسمّاة منفصلة للكائنات المتداخلة أو بُنى مجهولة مضمَّنة — وهو أمر مفيد للنماذج السريعة لمرة واحدة مقابل الأشكال المشتركة القابلة لإعادة الاستخدام.

يُجرى كل شيء من جانب العميل في متصفحك — يُحلَّل JSON الخاص بك محليًا ولا يُرسَل أبدًا إلى خادم.

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

كيف تُطابَق أنواع JSON مع أنواع Go؟

تصبح الأعداد الصحيحة `int`، والأعداد العشرية `float64`، والنصوص `string`، والقيم المنطقية `bool`، وتصبح `null` (أو أي شيء مجهول) `interface{}`. وتصبح المصفوفات شريحة Go بصيغة `[]T` من نوع العنصر، وتصبح الكائنات المتداخلة بُنى مُسمّاة (أو بُنى مجهولة مضمَّنة إذا فعّلت ذلك).

لماذا تُحوَّل أسماء حقولي مثل user_id إلى UserID؟

تُصدِّر Go الحقول التي تبدأ بحرف كبير، لذا تُحوَّل المفاتيح إلى نمط PascalCase. وتُبقى الاختصارات الشائعة — ID وURL وAPI وHTTP — بأحرف كبيرة بالكامل اتباعًا لأعراف golint، فيصبح `user_id` هو `UserID` ويصبح `api_url` هو `APIURL`. ويُحفَظ المفتاح الأصلي في علامة بنية json.

ماذا يفعل خيار omitempty؟

إضافة `,omitempty` إلى علامة بنية يُخبر `encoding/json` بترك ذلك الحقل خارج JSON المُسلسَل عندما يحمل قيمته الصفرية (0 أو "" أو false أو nil أو شريحة/خريطة فارغة). ويؤثر ذلك على الترميز فقط، لا على فك الترميز.