Heim >Backend-Entwicklung >Golang >Wie erreicht man JSON-Marshalling ohne HTML-Escape in Go?

Wie erreicht man JSON-Marshalling ohne HTML-Escape in Go?

Barbara Streisand
Barbara StreisandOriginal
2024-12-10 07:27:08385Durchsuche

How to Achieve JSON Marshalling without HTML Escaping in Go?

JSON-Marshalling ohne HTML-Escape-Funktion

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.

Benutzerdefinierter Marshaler

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.

Generisch Lösung

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 .

Beispielverwendung

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!

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