Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Membezakan Antara Nilai Kosong dan Hilang Apabila Membongkar JSON dalam Go?

Bagaimanakah Saya Boleh Membezakan Antara Nilai Kosong dan Hilang Apabila Membongkar JSON dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-12-04 09:40:15
asal
238 orang telah melayarinya

How Can I Differentiate Between Empty and Missing Values When Unmarshaling JSON in Go?

Membezakan Nilai Kekosongan dan Tidak Ditentukan dalam Go Unmarshaling

Apabila menyahmarshaling data JSON ke dalam struct Go, sukar untuk membezakan antara kosong dan hilang nilai. Ini amat penting apabila anda ingin mengendalikan nilai ini secara berbeza dalam program anda.

Pertimbangkan contoh berikut:

import (
    "encoding/json"
    "fmt"
)

type Category struct {
    Name        string
    Description string
}

var categories []Category

jsonBlob := []byte(`[
    {"Name": "A", "Description": "Monotremata"},
    {"Name": "B"},
    {"Name": "C", "Description": ""}
]`)

err := json.Unmarshal(jsonBlob, &categories)
if err != nil {
    fmt.Println("error:", err)
}
fmt.Printf("%+v", categories)
Salin selepas log masuk

Dalam contoh ini, medan Penerangan kategori B kosong, manakala medan Penerangan kategori C tidak dinyatakan dalam JSON. Outputnya ialah:

[{Name:A Description:Monotremata} {Name:B Description:} {Name:C Description:}]
Salin selepas log masuk

Seperti yang anda lihat, tidak mungkin untuk membezakan antara kedua-dua kes ini.

Penyelesaian

Anda boleh bezakan antara nilai kosong dan hilang dengan menukar jenis medan menjadi penunjuk. Jika nilai terdapat dalam JSON dengan nilai rentetan kosong, nilai tersebut akan ditetapkan kepada penuding yang menghala ke rentetan kosong. Jika ia tidak terdapat dalam JSON, ia akan dibiarkan sifar.

type Category struct {
    Name        string
    Description *string
}
Salin selepas log masuk

Dengan pengubahsuaian ini, output menjadi:

[{Name:A Description:0x1050c150} {Name:B Description:<nil>} {Name:C Description:0x1050c158}]
Salin selepas log masuk

Kini, anda boleh menggunakan nilai sifar untuk mengenal pasti medan hilang dan kendalikannya dengan sewajarnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membezakan Antara Nilai Kosong dan Hilang Apabila Membongkar JSON 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