Heim >Backend-Entwicklung >Golang >Wie erreicht man JSON-Marshalling ohne HTML-Escape in Go?
Bei der Serialisierung von JSON-Daten ist es oft wünschenswert, die HTML-Entitätskodierung auszuschließen, um eine genaue Darstellung von Zeichen wie < und >.
Das Standardverhalten von json.Marshal unterstützt keine anpassbaren Escape-Optionen. Mit der Einführung benutzerdefinierter Marshaler-Implementierungen können wir dieses Verhalten jedoch überschreiben.
Implementieren Sie eine benutzerdefinierte MarshalJSON-Methode für Ihre Struktur:
func (t *Track) MarshalJSON() ([]byte, error) { buffer := &bytes.Buffer{} encoder := json.NewEncoder(buffer) encoder.SetEscapeHTML(false) err := encoder.Encode(t) return buffer.Bytes(), err }
Diese Implementierung Setzt EscapeHTML im JSON-Encoder auf „false“ und verhindert so das Escapen von HTML-Entitäten.
Für einen allgemeineren Ansatz definieren Sie eine Funktion, die benutzerdefiniertes Marshalling auf jede beliebige Struktur anwendet:
func JSONMarshal(t interface{}) ([]byte, error) { buffer := &bytes.Buffer{} encoder := json.NewEncoder(buffer) encoder.SetEscapeHTML(false) err := encoder.Encode(t) return buffer.Bytes(), err }
Diese wiederverwendbare Funktion kann verwendet werden, um HTML-Escape für jede Struktur zu vermeiden, die dies erfordert .
Um einen dieser Ansätze zu verwenden, rufen Sie einfach JSON() oder JSONMarshal() auf Ihrem auf Zielstrukturtyp und verarbeiten Sie das resultierende Byte-Slice nach Bedarf.
Bedenken Sie, dass diese Problemumgehung nur anwendbar ist, wenn Sie die volle Kontrolle über die zu serialisierenden Daten haben. Wenn externer Code oder Bibliotheken von Drittanbietern beteiligt sind, ist es wichtig, die Kompatibilität mit dem erwarteten Escape-Verhalten sicherzustellen.
Das obige ist der detaillierte Inhalt vonWie erreicht man JSON-Marshalling ohne HTML-Escape in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!