Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Unmarshal JSON dengan Memvariasikan Format Respons dalam Go?

Bagaimana untuk Unmarshal JSON dengan Memvariasikan Format Respons dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-10-27 10:00:30662semak imbas

How to Unmarshal JSON with Varying Response Formats in Go?

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:

  • Format 1: { "message": "Message" }
  • Format 2: { "message": ["ERROR_CODE"] }

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!

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