Prévenir le débordement de pile dans UnmarshalJSON en interceptant l'appel d'Unmarshal
Dans le contexte d'implémentations personnalisées d'UnmarshalJSON, il peut être nécessaire d'effectuer des étapes supplémentaires lors de l’initialisation de la structure de données. Cependant, invoquer json.Unmarshal() dans UnmarshalJSON peut entraîner un débordement de pile car le décodeur JSON recherche à plusieurs reprises une implémentation personnalisée, ce qui entraîne une récursion infinie.
Pour éviter ce problème, l'implémentation par défaut sous-jacente peut être invoquée. sans déclencher la boucle récursive. Voici comment procéder :
Créer un type intermédiaire avec le mot-clé Type :
Conversion de type et Affectation :
Invoquer la fonction Unmarshal par défaut :
Post-traitement (facultatif) :
Par en utilisant cette technique, la boucle récursive est interrompue car le nouveau type n'a pas de méthode UnmarshalJSON définie. Cela évite un débordement de pile et permet une initialisation transparente avec un traitement supplémentaire.
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!