Maison >développement back-end >Golang >Comment réaliser le marshalling JSON sans échappement HTML dans Go ?

Comment réaliser le marshalling JSON sans échappement HTML dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 07:27:08385parcourir

How to Achieve JSON Marshalling without HTML Escaping in Go?

JSON Marshalling sans échappement HTML

Lors de la sérialisation de données JSON, il est souvent souhaitable d'exclure le codage d'entité HTML pour garantir une représentation précise des caractères tels que < et >.

Le comportement par défaut de json.Marshal ne prend pas en charge les options d'échappement personnalisables. Cependant, avec l'introduction d'implémentations personnalisées de Marshaler, nous pouvons remplacer ce comportement.

Marshaler personnalisé

Implémentez une méthode MarshalJSON personnalisée pour votre structure :

func (t *Track) MarshalJSON() ([]byte, error) {
    buffer := &bytes.Buffer{}
    encoder := json.NewEncoder(buffer)
    encoder.SetEscapeHTML(false)
    err := encoder.Encode(t)
    return buffer.Bytes(), err
}

Cette implémentation définit EscapeHTML sur false dans l'encodeur JSON, empêchant ainsi l'échappement des entités HTML.

Générique Solution

Pour une approche plus générique, définissez une fonction qui applique un marshaling personnalisé à toute structure arbitraire :

func JSONMarshal(t interface{}) ([]byte, error) {
    buffer := &bytes.Buffer{}
    encoder := json.NewEncoder(buffer)
    encoder.SetEscapeHTML(false)
    err := encoder.Encode(t)
    return buffer.Bytes(), err
}

Cette fonction réutilisable peut être utilisée pour éviter l'échappement HTML pour toute structure qui l'exige .

Exemple d'utilisation

Pour utiliser l'une de ces approches, appelez simplement JSON() ou JSONMarshal() sur votre cible struct et gérez la tranche d'octets résultante selon vos besoins.

N'oubliez pas que cette solution de contournement n'est applicable que lorsque vous avez un contrôle total sur les données en cours de sérialisation. Si du code externe ou des bibliothèques tierces sont impliqués, il est essentiel de garantir la compatibilité avec leur comportement d'échappement attendu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn