Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Anda Mengendalikan Berbilang Format JSON dalam Go Apabila Menyahmarshaling?

Bagaimana Anda Mengendalikan Berbilang Format JSON dalam Go Apabila Menyahmarshaling?

DDD
DDDasal
2024-10-26 12:30:03182semak imbas

How Do You Handle Multiple JSON Formats in Go When Unmarshaling?

Mengendalikan Berbilang Format JSON dengan Unmarshaling in Go

Apabila menggunakan API pihak ketiga yang mengembalikan JSON dalam format yang berbeza, ia mungkin mencabar untuk mengendalikan pelbagai struktur dalam Go. Satu cabaran biasa ialah menangani respons yang boleh mengandungi sama ada rentetan atau tatasusunan dalam medan "mesej".

Pendekatan Mudah

Pendekatan asas akan melibatkan penciptaan struct berasingan untuk setiap format:

<code class="go">type ResponseWithString struct {
    Message string `json:"message"`
}

type ResponseWithArray struct {
    Message []string `json:"message"`
}</code>

Anda kemudian boleh cuba menyahkod JSON ke dalam kedua-dua struct secara berturut-turut. Jika percubaan pertama (dengan rentetan) gagal, anda akan mencuba percubaan kedua (dengan tatasusunan).

Penyelesaian yang Lebih Elegan

Pendekatan yang lebih elegan ialah menggunakan jenis antara muka{}, yang boleh menyimpan sebarang jenis nilai. Dengan menyahmarshall JSON ke dalam pembolehubah jenis antara muka{}, anda boleh menyemak jenisnya secara dinamik dan bertindak balas dengan sewajarnya.

<code class="go">type Response struct {
    Message interface{} `json:"message"`
}

func main() {
    ...
    var r Response
    ...
    switch x := r.Message.(type) {
        case string:
            // Handle string message
        case []interface{}:
            // Handle array message
    }
}</code>

Perhatikan bahawa secara lalai, tatasusunan JSON dinyahmarshallkan ke dalam []antara muka{}, jadi anda boleh menggunakan penegasan jenis untuk membezakan antara rentetan dan tatasusunan.

Pendekatan ini memberikan lebih fleksibiliti dan kebolehgunaan semula kod, kerana anda boleh mengendalikan berbilang format JSON dengan satu struct.

Atas ialah kandungan terperinci Bagaimana Anda Mengendalikan Berbilang Format JSON dalam Go Apabila Menyahmarshaling?. 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