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

Bagaimanakah anda Mengendalikan Ralat Semasa JSON Marshalling di Golang?

Linda Hamilton
Lepaskan: 2024-10-30 17:19:25
asal
778 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan