Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah anda Mengendalikan Ralat Semasa JSON Marshalling di Golang?

Bagaimanakah anda Mengendalikan Ralat Semasa JSON Marshalling di Golang?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 17:19:25681semak imbas

How do you Handle Errors During JSON Marshalling in Golang?

Pengendalian Ralat dalam Golang JSON Marshalling

Struktur data JSON tidak boleh mewakili rujukan kitaran dan fungsi json.Marshal Go tidak boleh mengendalikannya. Akibatnya, menghantar struktur kitaran kepada Marshal membawa kepada rekursi tak terhingga dan panik masa jalan.

Di luar struktur kitaran, json.Marshal juga boleh mengembalikan ralat bukan nol dalam situasi di mana ia menemui jenis yang tidak disokong atau nilai tidak sah.

Jenis Tidak Disokong

Marshal mengembalikan UnsupportedTypeError apabila cuba menyusun jenis data yang tidak disokong. Contohnya:

<code class="go">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
    }
}</code>

Nilai Tidak Disokong

Marshal juga boleh mengembalikan UnsupportedValueError apabila cuba menyusun nilai yang tidak sah. Contohnya:

<code class="go">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
    }
}</code>

Dengan memahami syarat ini, pembangun boleh mengendalikan ralat dengan anggun dan memastikan json.Marshal mengembalikan hasil yang diharapkan atau mengendalikan ralat yang sesuai.

Atas ialah kandungan terperinci Bagaimanakah anda Mengendalikan Ralat Semasa JSON Marshalling di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn