Avatar ·

json.Marshal(struct) يعيد JSON فارغ "{}": كيف أصلح ذلك؟

مرحباً بالجميع! أنا مبتدئ في Go وواجهت مشكلة غريبة أثناء العمل مع JSON. لدي هيكل (struct)، أقوم بتعبئته بالبيانات، أحاول تحويله إلى JSON باستخدام `json.Marshal()`، لكن النتيجة هي أقواس معقوفة فارغة `{}`. هذا هو الكود الخاص بي:\n\n```go\npackage main\n\nimport (\n\t"encoding/json"\n\t"fmt"\n)\n\ntype User struct {\n\tName string\n\tAge int\n}\n\nfunc main() {\n\tu := User{"Alice", 30}\n\tresult, err := json.Marshal(u)\n\tif err != nil {\n\t\tfmt.Println("Error:", err)\n\t\treturn\n\t}\n\tfmt.Println(string(result)) // يطبع: {}\n}\n```\n\nكنت أتوقع رؤية `{"Name":"Alice","Age":30}`، لكني أرى فقط `{}`. لا يوجد خطأ، لكن البيانات مفقودة. ما الخطأ الذي أرتكبه؟ لقد تحققت من أن الهيكل ممتلئ بشكل صحيح — إذا قمت بطباعة الحقول عبر `fmt.Println(u.Name, u.Age)`، فإنها تظهر بشكل صحيح.