Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Melaksanakan JSON Unmarshaling Tersuai untuk Jenis Skalar Terbitan dalam Go?

Bagaimanakah Saya Boleh Melaksanakan JSON Unmarshaling Tersuai untuk Jenis Skalar Terbitan dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-11-25 05:46:18367semak imbas

How Can I Implement Custom JSON Unmarshaling for Derived Scalar Types in Go?

Mendapatkan Jenis Tersuai untuk JSON Unmarshaling dalam Go

Apabila bekerja dengan jenis tersuai dalam Go, selalunya perlu untuk melaksanakan fungsi UnmarshalJSON untuk mendayakan penukaran automatik daripada JSON kepada jenis yang diingini. Walau bagaimanapun, cabaran timbul apabila jenis itu diperoleh daripada nilai skalar. Artikel ini meneroka penyelesaian untuk mengatasi isu ini.

Pertimbangkan contoh jenis PersonID yang mewakili pemalar integer subtaip untuk mengenal pasti individu. Kami ingin melanjutkan fungsi jenis ini untuk menyokong penukaran automatik daripada rentetan JSON. Melaksanakan UnmarshalJSON untuk jenis ini menjadi sukar kerana ia bertujuan untuk mengembalikan atau mengubah suai nilai skalar secara langsung, manakala UnmarshalJSON menjangkakan struct untuk pengubahsuaiannya.

Untuk menyelesaikan masalah ini, kami menggunakan pendekatan penerima penunjuk. Dengan menggunakan penerima penunjuk, perubahan yang dibuat dalam kaedah UnmarshalJSON dicerminkan pada nilai asal. Berikut ialah contoh pelaksanaan UnmarshalJSON yang diubah suai:

func (intValue *PersonID) UnmarshalJSON(data []byte) error {
  var s string
  if err := json.Unmarshal(data, &s); err != nil {
    return err
  }
  *intValue = Lookup(s)
  return nil
}

Dalam pelaksanaan ini, teks JSON dinyahmarshall menjadi pembolehubah rentetan sebelum dihantar ke fungsi Carian, yang menukar rentetan kepada nilai PersonID yang dikehendaki. Nilai ini kemudiannya diberikan kepada intValue penuding.

Selain itu, untuk mengelakkan konflik antara teg JSON dan data JSON, pastikan teg dalam struct MyType sepadan dengan nama medan dalam JSON. Dengan mengikuti langkah ini, anda boleh berjaya melaksanakan UnmarshalJSON untuk jenis skalar terbitan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan JSON Unmarshaling Tersuai untuk Jenis Skalar Terbitan 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