Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengesan Atribut Pendua dalam Rentetan JSON Menggunakan Go?

Bagaimana untuk Mengesan Atribut Pendua dalam Rentetan JSON Menggunakan Go?

Patricia Arquette
Patricia Arquetteasal
2024-12-04 14:04:131072semak imbas

How to Detect Duplicate Attributes in JSON Strings Using Go?

Kesan Atribut Pendua dalam Rentetan JSON Menggunakan Golang

Untuk mengesan atribut pendua dalam rentetan JSON menggunakan Golang, pendekatan rekursif menggunakan json. Dekoder boleh digunakan. Kaedah ini merentasi struktur JSON, menyemak kunci pendua pada setiap peringkat objek.

Untuk melaksanakan pendekatan ini:

  1. Buat semakan fungsi() yang mengambil json.Decoder dan a fungsi panggil balik dup.
  2. Gunakan d.Token() untuk mendapatkan token seterusnya dalam JSON strim.
  3. Jika token ialah pembatas {, masukkan objek dan buat peta untuk menjejak kekunci.
  4. Lelar melalui objek, semak kekunci pendua dalam peta. Jika pendua ditemui, panggil fungsi dup.
  5. Semak nilai secara rekursif menggunakan fungsi check().
  6. Jika token ialah pembatas [, masukkan tatasusunan dan lelaran melalui elemen, secara rekursif menyemak setiap elemen.
  7. Gunakan pembatas mengekor untuk melengkapkan menghurai.

Fungsi dup boleh disesuaikan untuk mengendalikan pendua mengikut keperluan, seperti mengelog, merakam atau menghentikan proses penghuraian.

Contoh Penggunaan

func main() {
    data := `{"a": "b", "a":true,"c":["field_3 string 1","field3 string2"]}`
    dup := func(path []string) error {
        fmt.Printf("Duplicate %s\n", strings.Join(path, "/"))
        return nil
    }

    if err := check(json.NewDecoder(strings.NewReader(data)), nil, dup); err != nil {
        log.Fatal(err)
    }
}

Output

Duplicate a

Atas ialah kandungan terperinci Bagaimana untuk Mengesan Atribut Pendua dalam Rentetan JSON Menggunakan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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