Heim >Backend-Entwicklung >Golang >Wie kann ich mit Go doppelte Attribute in JSON-Strings erkennen?

Wie kann ich mit Go doppelte Attribute in JSON-Strings erkennen?

Susan Sarandon
Susan SarandonOriginal
2024-12-04 07:44:121030Durchsuche

How Can I Detect Duplicate Attributes in JSON Strings Using Go?

Doppelte Attribute in JSON-Strings mit Go erkennen

Wie identifizieren wir doppelte Attribute in JSON-Strings in Go? Lassen Sie uns eine Lösung mit JSON-Dekodierung und Schlüsselwertanalyse untersuchen.

Dekodierung des JSON-Strings

Wir verwenden den json.Decoder, um den JSON-String zu durchlaufen. Wenn wir auf Objekte stoßen, durchlaufen wir deren Schlüssel und Werte auf der Suche nach Duplikaten.

Prüfung auf Duplikate

Innerhalb der Prüffunktion unterscheiden wir zwischen verschiedenen Trennzeichen und Handles jeweils einzeln:

  • Objekte ({}): Wir erstellen eine Karte zum Verfolgen einzigartige Schlüssel. Wenn ein doppelter Schlüssel gefunden wird, rufen wir eine benutzerdefinierte Dup-Funktion auf, die das Duplikat protokollieren oder einen Fehler zurückgeben kann, um die Durchquerung zu beenden.
  • Arrays ([]):Wir behandeln jedes Element als Element in einem Slice und prüfen Sie rekursiv auf Duplikate innerhalb dieses Elements.

Verwendung Beispiel

Um ihre Funktionalität zu demonstrieren, definieren wir eine printDup-Funktion, die den Pfad des doppelten Schlüssels druckt und die Überprüfung auf einer Beispiel-JSON-Zeichenfolge aufruft:

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)
}

Dies wird Folgendes ausgeben:

Duplicate a
Duplicate d/e

Umgang mit Duplikaten mit Fehler

Alternativ können wir einen Fehler beim ersten gefundenen doppelten Schlüssel generieren:

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)
}

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

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