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
Lepaskan: 2024-12-04 14:04:13
asal
1061 orang telah melayarinya

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)
    }
}
Salin selepas log masuk

Output

Duplicate a
Salin selepas log masuk

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!

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