معالجة الأخطاء في Golang JSON Marshalling
لا يمكن لهياكل بيانات JSON أن تمثل مراجع دورية، ولا يمكن لوظيفة json.Marshal الخاصة بـ Go التعامل معها. ونتيجة لذلك، يؤدي تمرير الهياكل الدورية إلى Marshal إلى عودية لا نهائية وحالة من الذعر أثناء التشغيل.
بعيدًا عن الهياكل الدورية، يمكن لـ json.Marshal أيضًا إرجاع أخطاء غير صفرية في المواقف التي يواجه فيها أنواعًا غير مدعومة أو قيمًا غير صالحة.
الأنواع غير المدعومة
يقوم Marshal بإرجاع خطأ غير مدعوم عندما محاولة تنظيم نوع بيانات غير مدعوم. على سبيل المثال:
import "encoding/json"
func main() {
ch := make(chan int)
_, err := json.Marshal(ch)
if _, ok := err.(*json.UnsupportedTypeError); ok {
// Error: Unmarshal: unsupported type: chan int
}
}
القيم غير المدعومة يمكن أن يقوم Marshal أيضًا بإرجاع خطأ UnsupportedValueError عند محاولة تنظيم قيمة غير صالحة. على سبيل المثال:
استيراد ( "الترميز/json" "الرياضيات" ) الوظيفة الرئيسية () { إنفينيتي الإيجابية := math.Inf(1) _، خطأ := json.Marshal(positiveInfinity) if _, ok := err.(*json.UnsupportedValueError); نعم { // خطأ: json: قيمة غير مدعومة: Inf }import (
"encoding/json"
"math"
)
func main() {
positiveInfinity := math.Inf(1)
_, err := json.Marshal(positiveInfinity)
if _, ok := err.(*json.UnsupportedValueError); ok {
// Error: json: unsupported value: Inf
}
}
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3