Maison >développement back-end >Golang >Comment réaliser le marshalling JSON sans échappement HTML dans Go ?
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.
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.
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 .
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!