حوّل عينة JSON إلى بُنى Go مع وسوم json وint أو float64 ومؤشرات وomitempty
يعمل في متصفحك. لا يُرسل أي شيء تكتبه إلى أي مكان. تم التحقق في 16 أكتوبر 2026.الصق عينة JSON واحصل على أنواع struct في Go مع وسوم json، جاهزة لـ json.Unmarshal. تصبح الأعداد الصحيحة int، وint64 بعد 2,147,483,647، وأي كسر عشري يجعل الحقل float64؛ والقيمة التي تكون null أحيانًا تصبح مؤشرًا، والمفاتيح المفقودة من بعض الكائنات تحصل على omitempty.
تُرجمت هذه الصفحة آليًا من الأصل الإنجليزي. لم يراجع أي شخص هذه الترجمة بعد، لذا فالنسخة الإنجليزية هي التي يُعتمد عليها. اقرأ الأصل الإنجليزي
الصق عينة JSON، مثل استجابة API، في المربع الأيسر.
تظهر أنواع Go أثناء الكتابة: بنية لكل كائن، مع وسوم json وأسماء بأسلوب Go مثل UserID.
اختر البُنى المتداخلة المضمّنة أو omitempty لكل حقل إن أردتهما، وحدد اسم النوع الجذر.
اضغط نسخ، أو تنزيل لحفظ ملف .go، وأضف سطر package الخاص بك.
تفك Go ترميز JSON إلى بُنى، ويحتاج كل حقل إلى النوع الصحيح وإلى وسم json:"..." يسمّي المفتاح. يكتب هذا المحوّل تلك الأنواع من عينة، فتتحول استجابة API من 200 سطر إلى Go صحيح بلصقة واحدة.
كيف تُختار الأنواع.
| قيمة JSON | نوع Go |
|---|---|
| "text" | string |
| true / false | bool |
| 42 (أعداد صحيحة فقط) | int، أو int64 بعد 32 بت |
| 4.5 (ظهر أي كسر عشري) | float64 |
| null، ومعها نوع آخر | مؤشر، مثل *string |
| null فقط، أو أنواع مختلطة | any |
| [ ... ] | شريحة، مثل []string |
| { ... } | بنية مسماة، أو مضمّنة |
مصفوفات الكائنات. تُدمج كل كائنات المصفوفة في بنية واحدة، فيبقى الحقل الذي يظهر في بعضها فقط موجودًا، مع ,omitempty في وسمه. يتشارك كائنان لهما المفاتيح والأنواع نفسها تمامًا اسم نوع واحدًا.
الأسماء. تصبح المفاتيح أسماء Go مُصدَّرة بأسلوب Go: يصبح user_id بصيغة UserID، وavatar_url بصيغة AvatarURL، وفق قائمة الاختصارات في golint. والمفتاح الذي يبدأ برقم يحصل على N في أوله؛ ويُرقَّم مفتاحان يعطيان الاسم نفسه. والمفتاح الذي يحوي أحرفًا لا يستطيع الوسم حملها، مثل الفاصلة، يُعلَّم بتعليق، لأن encoding/json لن يطابقه.
الخيارات. يكتب خيار البُنى المتداخلة المضمّنة نوعًا واحدًا فيه بُنى مجهولة، وهذا يناسب استجابة تُستخدم مرة واحدة. ويناسب omitempty لكل حقل البُنى التي تسلسلها أيضًا. اسم النوع الجذر Root ما لم تسمّه.
فُحص كل ناتج بقراءة Go مرة أخرى وفك ترميز العينة وفق قواعد encoding/json. لا شيء مما تلصقه يغادر المتصفح.
الصق عينة JSON في المحوّل فتظهر بنية Go بجانبها، مع وسم json على كل حقل والكائنات المتداخلة أنواعًا مستقلة. انسخها إلى حزمتك وفك الترميز باستخدام json.Unmarshal(data, &v)، حيث v متغير من النوع الجذر.
استخدم int عندما تكون كل قيمة في العينة عددًا صحيحًا، وfloat64 عندما يحمل أي منها جزءًا عشريًا، لأن encoding/json يرفض وضع 4.5 في int. يختار المحوّل لكل حقل على حدة، ويأخذ int64 عندما يتجاوز عدد صحيح 2,147,483,647.
الحقل الذي يظهر بقيمة null وبقيمة أخرى يصبح مؤشرًا، مثل *string، فيعني nil القيمة null ويبقى النص الفارغ مختلفًا عنها. والحقل الذي لم يكن إلا null يصبح any، إذ لا تذكر العينة ما الذي كان سيحمله غير ذلك.
مع omitempty، يحذف json.Marshal الحقل عندما يحمل القيمة الصفرية: نصًا فارغًا أو 0 أو false أو nil أو شريحة فارغة. يضيفه المحوّل إلى المفاتيح المفقودة من بعض كائنات المصفوفة، ويضيفه مفتاح تبديل إلى كل الحقول.
يكتب أسلوب Go، الذي يفحصه golint ومعظم أدوات الفحص، الاختصارات بأحرف كبيرة: ID وURL وHTTP وAPI وJSON ونحو أربعين غيرها. ويحتفظ وسم json بالمفتاح الأصلي، user_id أو userId، فيبقى فك الترميز مطابقًا لواجهة API تمامًا.
لا. يجري التحويل في متصفحك دون أي طلب إلى خادم، ولا يُحفظ JSON، فتبقى استجابات API التي تحمل رموز وصول أو بيانات شخصية على جهازك. أغلق التبويب ولن يبقى شيء.
تتغير المعدلات والقواعد؛ راجع المصدر قبل الاعتماد على أي رقم.
هل ما زلت عالقًا؟ اسأل عن محوّل JSON إلى بُنى Go ويمكن لأي شخص يعرف الإجابة أن يجيب. لا حاجة إلى حساب.