Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyahmarshal Rentetan JSON ke dalam Nilai Int64 Go?

Bagaimana untuk Menyahmarshal Rentetan JSON ke dalam Nilai Int64 Go?

Barbara Streisand
Lepaskan: 2024-11-14 17:16:02
asal
526 orang telah melayarinya

How to Unmarshal JSON Strings into Int64 Go Values?

Menyahmarshalkan Rentetan JSON ke dalam Int64 Go Values

Go pengaturcara sering menghadapi mesej ralat "json: cannot unmarshal string into Go value of type int64" apabila cuba Unmarshal JSON data. Ralat ini berlaku apabila medan JSON sepadan dengan medan struct Go yang ditaip int64 mengandungi nilai rentetan.

Gambaran Keseluruhan Masalah

Pertimbangkan struct Go berikut:

type Survey struct {
    Id     int64  `json:"id,omitempty"`
    Name   string `json:"name,omitempty"`
}
Salin selepas log masuk

Jika anda Marshal struct ini ke dalam JSON dan mengubah suai medan "id" dalam klien JavaScript, ia mungkin menghantar rentetan JSON seperti ini:

{"id": "1"}
Salin selepas log masuk

di mana medan "id" kini menjadi rentetan.

Apabila anda cuba untuk menyahmarshal rentetan JSON ini ke dalam struct Go, anda akan menghadapi ralat yang disebutkan di atas.

Penyelesaian

Untuk mengendalikan situasi ini, anda boleh menentukan pilihan rentetan dalam teg JSON anda, seperti yang dilihat di bawah:

type Survey struct {
    Id   int64  `json:"id,string,omitempty"`
    Name   string `json:"name,omitempty"`
}
Salin selepas log masuk

Ini membolehkan medan "id" dibongkar sebagai int64 walaupun nilai JSON ialah rentetan.

Nota

Adalah penting untuk diperhatikan yang menyatakan omitEmpty untuk medan berteg rentetan hanya mempengaruhi proses marshaling, bukan proses unmarshaling. Ini bermakna anda tidak boleh membongkar rentetan kosong ke dalam medan int64, walaupun ia ditandakan dengan ,string,omitempty.

Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal Rentetan JSON ke dalam Nilai Int64 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