我正在使用C#,AJAX和JSON进行一些工作,并且遇到了自我引用循环错误。我正在设法使用JsonIgnore属性解决此问题,但是我想知道是否有人可以给我关于此处实际发生情况的适当解释。
非常感谢。
戴夫
我们对您的问题的了解不多,但是可能正是您所描述的:一个自我参照的循环或一个循环的参照链。
假设您具有属性User
的类型public UserImage Image
的变量。现在,假设类型UserImage
具有引用回用户的属性User
。
在您的.NET代码中,仅此而已。 myImage.User
为您提供用户,myUser.Image
为您提供图像。但是,假设您要序列化myUser
(例如,转换为JSON)。然后,您必须循环User
的每个属性并递归序列化that。序列化器将像这样开始
{ "ID": 1, "Image": { ...
现在它必须序列化用户映像。并记住UserImage
具有变量“ User”。
{ "ID": 1, "Image": { "Path": "image.src", "User": {
但是该用户与我们要引用的用户完全相同
{ "ID": 1, "Image": { "Path": "image.src", "User": { "ID": 1, "Image":
现在我们必须为that用户序列化图像,但是,该图像与以前相同:
{
"ID": 1,
"Image": {
"Path": "image.src",
"User": {
"ID": 1,
"Image": {
"Path": "image.src",
"User": {
"ID": 1,
"Image": {
"Path": "image.src",
"User": {
"ID": 1,
"Image": {
"Path": "image.src",
"User":
因此,如果我们不断序列化循环引用,我们将永远都没有最终产品。