Wie kann ich beim Unmarshalling von JSON mit mehrdeutigen booleschen Werten (0/1, wahr/falsch) umgehen?

Susan Sarandon
Freigeben: 2024-11-26 22:06:15
Original
612 Leute haben es durchsucht

How Can I Handle Ambiguous Boolean Values (0/1, true/false) When Unmarshalling JSON?

Umgang mit mehrdeutigen booleschen Werten in JSON mit Unmarshalling

Beim Zuordnen der Ausgabe eines Dienstes, der boolesche Werte inkonsistent als 0 und falsch (oder 1 und wahr) darstellt, wird es Es wird notwendig, beim Unmarshalling einen freizügigeren Ansatz zu wählen. Auch wenn das Hinzufügen einer Zeichenfolge zu JSON-Tags möglicherweise nicht ausreicht, stehen alternative Lösungen zur Verfügung.

Implementieren eines benutzerdefinierten Typs

Eine Lösung besteht darin, einen benutzerdefinierten Typ wie ConvertibleBoolean zu definieren, um Mehrdeutigkeiten zu behandeln boolesche Werte. Dieser Typ enthält eine UnmarshalJSON-Methode, die die Eingabedaten basierend auf den angegebenen Konventionen in einen booleschen Wert umwandelt.

type ConvertibleBoolean bool

func (bit *ConvertibleBoolean) UnmarshalJSON(data []byte) error {
    asString := string(data)
    if asString == "1" || asString == "true" {
        *bit = true
    } else if asString == "0" || asString == "false" {
        *bit = false
    } else {
        return errors.New(fmt.Sprintf("Boolean unmarshal error: invalid input %s", asString))
    }
    return nil
}
Nach dem Login kopieren

Dieser benutzerdefinierte Typ stellt sicher, dass Eingabewerte wie „1“ und „0“ als boolesche Werte interpretiert werden , was ein fehlerfreies Parsen ermöglicht.

Zeigermethode-Empfänger

Es ist wichtig, dies zu beachten, um den Brauch zu verstehen Damit die UnmarshalJSON-Methode ordnungsgemäß funktioniert, muss sie als Zeigermethodenempfänger implementiert werden. Dies liegt daran, dass Zeiger Änderungen am zugrunde liegenden Wert ermöglichen.

Mit diesem Ansatz können Sie mehrdeutige boolesche Werte effektiv aus JSON-Daten entfernen und so sicherstellen, dass die resultierende Struktur trotz der Inkonsistenzen in den Eingabedaten die erwarteten Werte enthält .

Das obige ist der detaillierte Inhalt vonWie kann ich beim Unmarshalling von JSON mit mehrdeutigen booleschen Werten (0/1, wahr/falsch) umgehen?. 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