Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengesan Atribut Pendua dalam Rentetan JSON Menggunakan Go?
Kesan Atribut Pendua dalam Rentetan JSON dengan Go
Bagaimanakah kita mengenal pasti atribut pendua dalam rentetan JSON dalam Go? Mari kita mendalami penyelesaian menggunakan penyahkodan JSON dan analisis nilai kunci.
Menyahkod Rentetan JSON
Kami menggunakan json.Decoder untuk melintasi rentetan JSON. Apabila kami menemui objek, kami mengulangi kekunci dan nilainya untuk mencari pendua.
Menyemak Pendua
Dalam fungsi semak, kami membezakan antara pembatas dan pemegang yang berbeza setiap kes secara berasingan:
Contoh Penggunaan
Untuk menunjukkan kefungsiannya, mari tentukan fungsi printDup yang mencetak laluan kunci pendua dan semakan panggilan pada rentetan JSON sampel:
func printDup(path []string) error { fmt.Printf("Duplicate %s\n", strings.Join(path, "/")) return nil } ... 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) }
Kehendak ini output:
Duplicate a Duplicate d/e
Mengendalikan Pendua dengan Ralat
Sebagai alternatif, kami boleh menjana ralat pada kunci pendua pertama yang ditemui:
var ErrDuplicate = errors.New("duplicate") func dupErr(path []string) error { return ErrDuplicate } ... data := `{"a": "b", "a":true,"c":["field_3 string 1","field3 string2"], "d": {"e": 1, "e": 2}}` err := check(json.NewDecoder(strings.NewReader(data)), nil, dupErr) if err == ErrDuplicate { fmt.Println("found a duplicate") } else if err != nil { // some other error log.Fatal(err) }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Atribut Pendua dalam Rentetan JSON Menggunakan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!