Maison >développement back-end >C++ >Comment résoudre les erreurs de 'boucle auto-référence détectée' lors des objets POCO de la sérialisation de l'entité avec JSON.net?
Résolution "JSON.net Erreur: boucle de référence auto-référence détectée"
Sérialisation des anciens objets CLR (POCOS) à partir des modèles de données d'entité (.edmx) en utilisant JsonConvert.SerializeObject
peut parfois lancer cette erreur:
<code>Error: Self referencing loop detected for type System.data.entity occurs.</code>
Cela se produit parce que les classes d'entité de l'entité ont souvent des relations d'auto-référence. La solution réside dans l'utilisation de JsonSerializerSettings
pour contrôler le comportement de sérialisation.
Utilisation de JSonSerializerSettings
JsonSerializerSettings
offre plusieurs options pour gérer les références circulaires:
ReferenceLoopHandling.Error
(par défaut): lance une exception (l'erreur que vous voyez). ReferenceLoopHandling.Serialize
: Sérialise des objets imbriqués, mais peut entraîner des boucles infinies avec des structures profondément imbriquées. Utile pour les objets avec des relations mais pas la nidification infinie. ReferenceLoopHandling.Ignore
: saute la sérialisation des objets qui se référent. Implémentation de JSonSerializerSettings
Voici comment appliquer ces paramètres:
Pour les objets avec nidification finie, utilisez ReferenceLoopHandling.Serialize
:
<code class="language-csharp">JsonConvert.SerializeObject(YourPOCOHere, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Serialize });</code>
Pour les objets avec une nidification potentiellement infinie, utilisez PreserveReferencesHandling.Objects
pour éviter StackOverflowException
:
<code class="language-csharp">JsonConvert.SerializeObject(YourPOCOHere, Formatting.Indented, new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.Objects });</code>
Choisir le bon réglage
Le meilleur réglage dépend de la structure de votre POCO. Considérez attentivement les relations au sein de vos données pour sélectionner l'option la plus appropriée et éviter les erreurs de boucle d'auto-référence pendant la sérialisation JSON.
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!