Bei der Verwendung von JSON kann es Situationen geben, in denen während des Unmarshaling-Prozesses eine Berücksichtigung der Groß-/Kleinschreibung gewünscht ist. Allerdings priorisiert die Standard-JSON-Bibliothek in Go Übereinstimmungen ohne Berücksichtigung der Groß-/Kleinschreibung, was möglicherweise zu unerwartetem Verhalten führt.
Gemäß der offiziellen Dokumentation werden beim Unmarshaling eingehende JSON-Schlüssel berücksichtigt mit Strukturfeldnamen oder Tags verglichen. Die Bibliothek bevorzugt exakte Übereinstimmungen, toleriert aber auch solche, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird. Dies kann zu Konflikten führen, wenn Sie beispielsweise JSON mit Schlüsseln wie „e“ und „E“ erhalten und nur die „e“-Variante entmarshallen möchten.
Bedauerlicherweise bietet die Standard-JSON-Bibliothek derzeit keinen einfachen Mechanismus zum Deaktivieren des Unmarshallings ohne Berücksichtigung der Groß-/Kleinschreibung. In der Dokumentation unter https://golang.org/pkg/encoding/json/#Unmarshal heißt es ausdrücklich:
„Unmarshal ordnet eingehende Objektschlüssel den von Marshal verwendeten Schlüsseln zu (entweder dem Strukturfeldnamen oder seinem Tag).“ , bevorzugt eine exakte Übereinstimmung, akzeptiert aber auch eine Übereinstimmung ohne Berücksichtigung der Groß- und Kleinschreibung besteht darin, einen benutzerdefinierten JSON-Decoder zu erstellen, indem das Paket „encoding/json“ erweitert wird. Dieser Decoder könnte einen Unmarshalling-Mechanismus auf Feldebene implementieren, bei dem die Groß-/Kleinschreibung beachtet wird und der Tags mit unterschiedlicher Groß-/Kleinschreibung ignoriert.
Das obige ist der detaillierte Inhalt vonWie erreicht man in Go ein JSON-Unmarshaling unter Beachtung der Groß- und Kleinschreibung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!