Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么JavaScriptSerializer.Serialize()从未返回_C#_Asp.net_Json_Entity Framework 6 - Fatal编程技术网

C# 为什么JavaScriptSerializer.Serialize()从未返回

C# 为什么JavaScriptSerializer.Serialize()从未返回,c#,asp.net,json,entity-framework-6,C#,Asp.net,Json,Entity Framework 6,我正在尝试将C#对象序列化为JSON对象。代码如下: QuestionGroup group = DatabaseMethods.GetQuestionGroup(questionGroupID); JavaScriptSerializer jSer = new JavaScriptSerializer(); string json = jSer.Serialize(group); 组在第1行之后的外观与预期一致。第三行从不返回任何内容,我无法进入函数;我只能看元数据,它没有提到这方面的任何内

我正在尝试将C#对象序列化为JSON对象。代码如下:

QuestionGroup group = DatabaseMethods.GetQuestionGroup(questionGroupID);
JavaScriptSerializer jSer = new JavaScriptSerializer();
string json = jSer.Serialize(group);
在第1行之后的外观与预期一致。第三行从不返回任何内容,我无法进入函数;我只能看元数据,它没有提到这方面的任何内容。我没有得到例外;它只是…永远…不会回来

我要传递的对象是一个有孩子和孙子的非常可怕的类。这是EF课程;我不知道这是否会干扰JSON序列化程序。它应该可以接受任何物体,所以我不知道那会是什么;但谁知道呢

这是一个类,为了简洁起见删除了一些代码:

public class QuestionGroup
{
    public Int32 QuestionGroupID { get; set; }
    public Int32 Order { get; set; }

    [Display(Name = "Path to File", Prompt = "Path to File")]
    [DataType(DataType.Upload)]

    [NotMapped]
    public HttpPostedFileWrapper PathToFile { get; set; }
    public String FileName { get; set; }
    public virtual Image Image { get; set; }
    public Int32? ImageID {get; set; }

    public String Text { get; set; }
    public DateTime WhenCreated { get; set; }
    public Int32 CreatedBy { get; set; }

    [NotMapped]
    public Int32 MasteryCriteriaNumerator { get; set; }
    [NotMapped]
    public Int32 MasteryCriteriaDenominator { get; set; }

    public Boolean TeacherAdministersToStudent { get; set; }

    /*Foreign keys for associations*************************************************/
    public Guid MasteryObjectiveID { get; set; }

    /*Navigational properties for EF************************************************/
    public MasteryObjective MasteryObjective {
        get { return DAL.DatabaseMethods.GetMasteryObjective(MasteryObjectiveID); }
    }
    public List<Question> Questions{ get; set; }
    public virtual List<Assessment> Assessments { get; set; }
    public virtual List<MultipleChoiceResult> MultipleChoiceResults { get; set; }

    // The full url to qg's image on rackspace
    [NotMapped]
    public String RackspaceFullURL { get { return GetRackspaceURL(QuestionGroupID, FileName); } }

    private String GetRackspaceURL(Int32 QuestionGroup, String FileName)
    {
        //code removed
    }
}
公共类问题组
{
公共Int32 QuestionGroupID{get;set;}
公共Int32顺序{get;set;}
[显示(Name=“文件路径”,Prompt=“文件路径”)]
[数据类型(DataType.Upload)]
[未映射]
公共HttpPostedFileWrapper路径文件{get;set;}
公共字符串文件名{get;set;}
公共虚拟映像映像{get;set;}
public Int32?ImageID{get;set;}
公共字符串文本{get;set;}
创建{get;set;}时的公共日期时间
公共Int32由{get;set;}创建
[未映射]
公共Int32 MasteryCriteriaNumerator{get;set;}
[未映射]
公共Int32 MasteryCriteriaDenominator{get;set;}
公共布尔型教师管理学生{get;set;}
/*关联的外键*************************************************/
公共Guid MasteryObjectiveID{get;set;}
/*EF的导航属性************************************************/
公共主语主语主语主语主语主语主语主语{
获取{return DAL.DatabaseMethods.GetMasteryObjective(MasteryObjectId);}
}
公共列表问题{get;set;}
公共虚拟列表评估{get;set;}
公共虚拟列表multipleChiiceResults{get;set;}
//rackspace上qg图像的完整url
[未映射]
公共字符串RackspaceFullURL{get{return GetRackspaceURL(QuestionGroupID,FileName);}
私有字符串GetRackspaceURL(Int32问题组,字符串文件名)
{
//代码删除
}
}

您可能遇到
StackOverflowException
。但是,
JavaScriptSerializer
会检测循环引用,并在遇到循环引用时引发异常,因此此类异常的最可能原因不适用于此处。尝试添加到连续属性以缩小问题范围。@dbc我将
[ScriptIgnore]
放在我一直怀疑的属性上,得到了不同的结果。现在它抛出一个
{“ObjectContext实例已被释放,不能再用于需要连接的操作。”}
。尝试禁用延迟加载属性,正如这里所讨论的:您能在处理DbContext之前序列化为JSON吗?嗯……所以我尝试在实际的数据库方法中序列化JSON,所以它是在处理DbContext之前完成的……但这表明问题不在于我认为的属性。事实上,我将该属性应用于几乎所有属性,但仍然存在相同的问题(它永远不会返回任何内容)。所以在这一点上…我在这方面花了太多时间,所以我只想硬编码一个方法,手动将对象映射到JSON对象-(