Bagaimanakah Saya Boleh Mengendalikan Format JSON yang Pelbagai Apabila Menyahmarshalling dalam Go?

Linda Hamilton
Lepaskan: 2024-10-26 23:55:30
asal
250 orang telah melayarinya

How Can I Handle Diverse JSON Formats When Unmarshalling in Go?

Menyesuaikan Unmarshal untuk Mengendalikan Pelbagai Format JSON

Apabila mengakses API luaran, pembangun sering menghadapi pelbagai format tindak balas JSON, memberikan cabaran apabila membongkar data ke dalam struktur yang konsisten. Dalam Go, adalah mungkin untuk mengendalikan perbezaan ini dengan anggun dengan beberapa teknik.

Ambil contoh titik akhir API yang mengembalikan mesej JSON dalam dua format, sama ada sebagai rentetan "mesej" atau tatasusunan kod ralat [ "ERROR_CODE"]. Untuk mengurus variasi ini, struct tersuai boleh ditakrifkan untuk memegang respons:

<code class="go">type Response struct {
    Message interface{} `json:"message"`
}</code>
Salin selepas log masuk

Dengan menetapkan medan Mesej sebagai jenis antara muka, sistem menaip dinamik Go membolehkan penyimpanan jenis data yang pelbagai. Fleksibiliti ini menawarkan titik permulaan untuk mengendalikan format respons yang berbeza.

Untuk menyahmarshal JSON ke dalam struct Respons, panggilan ke json.Unmarshal akan digunakan. Walau bagaimanapun, memandangkan medan Mesej boleh memuatkan pelbagai jenis, kes khas timbul apabila JSON mewakili tatasusunan (tindak balas ralat). Secara lalai, tatasusunan JSON dinyahmarshallkan ke dalam nilai jenis []antara muka{}.

Kunci untuk mengendalikan perbezaan ini terletak pada memeriksa jenis medan Mesej unmarshalled. Ini boleh dicapai dengan penegasan jenis atau suis jenis, seperti yang ditunjukkan di bawah:

<code class="go">    switch x := r.Message.(type) {
    case string:
        fmt.Println("Success, message:", x)
    case []interface{}:
        fmt.Println("Error, code:", x)
    default:
        fmt.Println("Something else:", x)
    }</code>
Salin selepas log masuk

Dalam coretan ini, jenis r.Message diperiksa. Jika ia adalah rentetan, ia menunjukkan mesej kejayaan. Jika ia adalah sekeping antara muka, ia mewakili tindak balas ralat dengan kod ralat. Jika tidak, ia dianggap sebagai respons yang tidak dijangka.

Dengan menggunakan teknik ini, pembangun boleh menyahmarshal respons JSON dengan format yang berbeza-beza ke dalam satu struct bersatu, membolehkan pemprosesan dan membuat keputusan seterusnya berdasarkan jenis mesej.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Format JSON yang Pelbagai Apabila Menyahmarshalling dalam Go?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!