Bagaimana untuk Unmarshal JSON dengan Memvariasikan Format Respons dalam Go?

Linda Hamilton
Lepaskan: 2024-10-27 10:00:30
asal
670 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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!