Maison >développement back-end >C++ >Comment corriger la 'boucle auto-référence détectée' Erreur lors de la sérialisation des objets Framework Entity Framework avec json.net?
Dépannage de l'erreur de "boucle d'auto-référence détectée" dans JSON.net (objets du modèle de données d'entité)
Lorsque vous utilisez JsonConvert.SerializeObject
pour sérialiser les anciens objets CLR (POCOS) dérivés d'un modèle de données d'entité (.edmx), vous pouvez rencontrer une erreur "de boucle d'auto-référence détectée". Ce guide propose des solutions.
Tiration de JsonSerializerSettings
La classe JsonSerializerSettings
offre un contrôle granulaire sur le comportement de sérialisation, y compris la manipulation de la boucle. La valeur par défaut ReferenceLoopHandling.Error
lance une exception lors de la rencontre d'une référence circulaire. Pour résoudre ce problème, ajustez le réglage ReferenceLoopHandling
.
ReferenceLoopHandling.Serialize
: C'est généralement la meilleure option. Il sérialise les objets imbriqués tout en empêchant la récursivité infinie.
ReferenceLoopHandling.Ignore
: Cette approche saute la sérialisation d'objets qui sont référencés récursivement.
ReferenceLoopHandling.Preserve
: Cela tente la sérialisation même avec des références circulaires, mais peut entraîner une StackOverflowException
si la nidification est infiniment profonde.
Exemple d'implémentation:
<code class="language-csharp">JsonConvert.SerializeObject( yourPocoObject, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Serialize } );</code>
Remplacer yourPocoObject
par votre instance POCO. Ce code utilise ReferenceLoopHandling.Serialize
pour gérer efficacement les références circulaires 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!