Heim >Backend-Entwicklung >Golang >Wie kann ich mit Go doppelte Attribute in JSON-Strings erkennen?
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:
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!