Heim > Backend-Entwicklung > Golang > Wie erkennt man mit Golang doppelte Attribute in JSON-Strings?

Wie erkennt man mit Golang doppelte Attribute in JSON-Strings?

Mary-Kate Olsen
Freigeben: 2024-12-05 20:29:11
Original
363 Leute haben es durchsucht

How to Detect Duplicate Attributes in JSON Strings Using Golang?

Erkennen doppelter Attribute in JSON-Strings mit Golang

In JSON-Strings ist es wichtig, die Datenintegrität aufrechtzuerhalten, indem doppelte Attribute verhindert werden. Golang bietet eine praktische Möglichkeit, solche Duplikate zu erkennen und zu verarbeiten.

Lösung:

Um doppelte Attribute in einer JSON-Zeichenfolge zu erkennen, können wir den json.Decoder zum Durchlaufen verwenden die JSON-Struktur. Während der Dekodierung inspizieren wir Objekte und ihre Schlüssel und suchen nach Duplikaten.

Der bereitgestellte Golang-Code demonstriert diesen Prozess:

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
}
Nach dem Login kopieren

Beispielverwendung:

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)
}
Nach dem Login kopieren

In diesem Beispiel werden die folgenden Duplikate gemeldet:

Duplicate a
Duplicate d/e
Nach dem Login kopieren

Benutzerdefiniert Fehlerbehandlung:

Um einen Fehler auszulösen, wenn Sie auf den ersten doppelten Schlüssel stoßen, ändern Sie die Funktion dupErr() wie folgt:

func dupErr(path []string) error {
    return ErrDuplicate
}
Nach dem Login kopieren

Dieser Ansatz ermöglicht die Erkennung doppelter Attribute , sodass Sie geeignete Maßnahmen ergreifen können, z. B. das Problem protokollieren oder die doppelten Daten herausfiltern.

Das obige ist der detaillierte Inhalt vonWie erkennt man mit Golang doppelte Attribute in JSON-Strings?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage