Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengesan Atribut Pendua dalam Rentetan JSON Menggunakan Golang?
Mengesan Atribut Pendua dalam Rentetan JSON Menggunakan Golang
Dalam rentetan JSON, adalah penting untuk mengekalkan integriti data dengan menghalang atribut pendua. Golang menyediakan cara yang mudah untuk mengesan dan mengendalikan pendua tersebut.
Penyelesaian:
Untuk mengesan atribut pendua dalam rentetan JSON, kami boleh menggunakan json.Decoder untuk melintasi struktur JSON. Semasa menyahkod, kami memeriksa objek dan kuncinya, menyemak pendua.
Kod Golang yang disediakan menunjukkan proses ini:
func check(d *json.Decoder, path []string, dup func(path []string) error) error { // Handle token and delimeters t, err := d.Token() if err != nil { return err } delim, ok := t.(json.Delim) // Skip scaler types if !ok { return nil } switch delim { case '{': // Initialize map for keys and avoid duplicates keys := make(map[string]bool) for d.More() { key := t.(string) if keys[key] { return dup(append(path, key)) } keys[key] = true if err := check(d, append(path, key), dup); err != nil { return err } } case '[': i := 0 for d.More() { if err := check(d, append(path, strconv.Itoa(i)), dup); err != nil { return err } i++ } } return nil }
Contoh Penggunaan:
data := `{"a": "b", "a":true,"c":["field_3 string 1","field3 string2"], "d": {"e": 1, "e": 2}}` if err := check(json.NewDecoder(strings.NewReader(data)), nil, printDup); err != nil { log.Fatal(err) }
Contoh ini akan melaporkan perkara berikut pendua:
Duplicate a Duplicate d/e
Pengendalian Ralat Tersuai:
Untuk membuang ralat apabila menemui kunci pendua pertama, ubah suai fungsi dupErr() seperti berikut:
func dupErr(path []string) error { return ErrDuplicate }
Pendekatan ini membolehkan pengesanan atribut pendua, membolehkan anda mengambil tindakan yang sesuai seperti sebagai log isu atau menapis keluar data pendua.
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Atribut Pendua dalam Rentetan JSON Menggunakan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!