Mengendalikan Input Rentetan untuk Medan Int64 dalam JSON Unmarshaling
Menyahmarshaling data JSON ke dalam nilai Go kadangkala menghadapi cabaran, terutamanya apabila menghadapi perwakilan rentetan nilai integral. Artikel ini meneroka penyelesaian kepada ralat "json: cannot unmarshal string into Go of type int64" apabila menyahmarshall data JSON dengan medan kamiran berkod rentetan.
Pernyataan Masalah
Pertimbangkan struct Go berikut yang mewakili respons tinjauan:
type tySurvey struct { Id int64 `json:"id,omitempty"` Name string `json:"name,omitempty"` }
Dalam contoh ini, medan id ditakrifkan sebagai int64. Selepas mensiri tySurvey kepada JSON dan menghantarnya untuk manipulasi pihak klien, klien mengemas kini medan nama. Walau bagaimanapun, ia secara tidak sengaja mengekodkan medan id sebagai rentetan semasa penghantaran data.
Setelah menerima data JSON yang diubah suai pada pelayan, struct tySurvey asal dinyahmarshaled, mengakibatkan ralat: "json: cannot unmarshal string into Nilai pergi jenis int64."
Penyelesaian
Penyelesaian terletak pada mengubah suai teg medan JSON dengan menambahkan ,rentetan pada definisi jenis. Ini mengarahkan json unmarshaler untuk menerima perwakilan rentetan untuk nilai kamiran:
type tySurvey struct { Id int64 `json:"id,string,omitempty"` Name string `json:"name,omitempty"` }
Pilihan ,rentetan membenarkan penukaran lancar nilai kamiran berkod rentetan kepada nilai Go yang sepadan semasa penyahmarshalan.
Pertimbangan Tambahan
Apabila menyatakan ,omitempty untuk nilai kamiran berkod rentetan, adalah penting untuk ambil perhatian bahawa rentetan kosong tidak boleh dinyahkodkan. Pengehadan ini memastikan pengabaian hanya digunakan semasa pengekodan.
Kesimpulan
Melampirkan ,rentetan pada teg medan JSON membolehkan pembongkaran nilai integral berkod rentetan dengan mudah dalam Go. Teknik ini memudahkan pengendalian data dan meningkatkan keteguhan kod dengan menampung manipulasi data sisi klien yang mungkin mengubah jenis medan secara tidak sengaja.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Input Rentetan untuk Medan Int64 dalam JSON Unmarshaling?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!