【发布时间】:2010-07-13 11:48:22
【问题描述】:
我正在使用 C#、AJAX 和 JSON 做一些工作,但遇到自引用循环错误。我正在设法使用 JsonIgnore 属性解决这个问题,但我想知道是否有人可以就这里实际发生的情况给我一个正确的解释。
非常感谢。
戴夫
【问题讨论】:
标签: c# json asp.net-ajax jquery
我正在使用 C#、AJAX 和 JSON 做一些工作,但遇到自引用循环错误。我正在设法使用 JsonIgnore 属性解决这个问题,但我想知道是否有人可以就这里实际发生的情况给我一个正确的解释。
非常感谢。
戴夫
【问题讨论】:
标签: c# json asp.net-ajax jquery
我们没有得到关于您的问题的详细信息,但它可能正是您所描述的:自引用循环或引用循环链。
假设你有一个User 类型的变量,它有一个属性public UserImage Image。现在,假设UserImage 类型有一个属性User 引用回用户。
在您的 .NET 代码中,就是这样。 myImage.User 给你用户,myUser.Image 给你图像。但是假设你想序列化myUser(比如转换成 JSON)。然后你必须循环 User 的每个属性并递归地序列化 that。序列化器会像这样开始
{ "ID": 1, "Image": { ...
现在它必须序列化用户图像。记住UserImage 有变量“用户”。
{ "ID": 1, "Image": { "Path": "image.src", "User": {
但用户与我们尝试引用的用户完全相同
{ "ID": 1, "Image": { "Path": "image.src", "User": { "ID": 1, "Image":
现在我们必须为那个用户序列化图像,但这又是和以前一样的图像:
{
"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":
因此,如果我们不断地序列化循环引用,我们永远不会得到最终产品。
【讨论】: