Menghapuskan JSON dengan Memvariasikan Format Respons dalam Go
Apabila menggunakan titik akhir luaran, anda mungkin menghadapi respons JSON dengan format yang berbeza. Mengendalikan variasi ini boleh menjadi mencabar, terutamanya apabila anda ingin menstrukturkan respons anda kepada jenis data tertentu.
Dilema
Anda menghadapi titik akhir yang mengembalikan JSON dalam dua format:
Cabarannya ialah untuk mencipta struct Go yang boleh menampung kedua-dua format respons.
Pendekatan Mudah
Pada mulanya, anda mempertimbangkan untuk menggunakan dua struct berasingan, satu untuk setiap format. Walau bagaimanapun, pendekatan ini tidak sesuai kerana ia memerlukan beberapa percubaan penyahkodan dan pengendalian ralat.
Penyelesaian yang Lebih Elegan
Penyelesaian yang lebih elegan melibatkan pembongkaran JSON ke dalam antara muka jenis {}. Antara muka{} ialah jenis khas dalam Go yang boleh menyimpan sebarang nilai, tanpa mengira jenis khususnya.
<code class="go">type Response struct { Message interface{} `json:"message"` }</code>
Setelah dinyahmarshalkan, anda boleh menggunakan penegasan jenis atau suis taip untuk memeriksa jenis medan Mesej .
<code class="go">switch x := r.Message.(type) { case string: // Handle string message case []interface{}: // Handle array message default: // Handle unexpected type }</code>
Pendekatan ini membolehkan anda mengendalikan kedua-dua format respons dalam satu struct, memberikan penyelesaian yang lebih mantap dan boleh diselenggara.
Atas ialah kandungan terperinci Bagaimana untuk Unmarshal JSON dengan Memvariasikan Format Respons dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!