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!