2010-02-21 5 views
1

Ok, donc j'essaie d'utiliser le JavaScriptSerializer pour travailler avec le code this. Cependant, il se bloque lorsqu'il atteint la dernière ligne;Problème VB.NET convertir DataTable en JSON

Dim json As New String(sr.Serialize(dt)) 

Je reçois ce message d'erreur;

Une référence circulaire a été détectée lors de la sérialisation un objet de type 'System.Reflection.Module.

J'apprécierais vraiment toute idée qui pourrait aider à résoudre ce problème.

Répondre

4

La référence circulaire signifie que la sérialisation de l'objet entraînerait une boucle infinie. Par exemple si vous essayez de sérialiser l'objet "A" ayant une référence 1 à 1 à l'objet "B". Déclarez une classe contenant les données que vous souhaitez sérialiser avec JSON pour résoudre ce problème.

+0

tout code sur la façon de faire cela? – Saravanan

2

Comme l'a déjà dit hkda150, vous pouvez utiliser une classe spécialement conçue pour être sérialisée. Cela vous permettra en outre d'avoir des valeurs de clé étrangères sérialisées au lieu d'avoir des objets complets liés sérialisés. Ainsi, si vous numérotez un objet qui a une propriété a.SomeB de type B, alors vous voudrez souvent que l'identifiant de a.someB soit présent dans votre page Web. Évidemment, je n'en connais pas assez pour pouvoir dire si cela est pertinent dans votre cas d'utilisation spécifique. BTW, Si vous faites beaucoup de correspondance entre les «objets métier» et les «objets destinés à la sérialisation», vous pouvez envisager d'utiliser AutoMapper.