序列化类型错误的对象时检测到循环引用?

2 c# asp.net json asmx

我将其从服务器返回到 JSON(一个 jquery 数据表),但它返回错误:

System.InvalidOperationException: A circular reference was detected while serializing an object of type 'System.Reflection.RuntimeModule'.
   at WebServices.himher.getUsers1(Int32 iDisplayLength, Int32 iDisplayStart, Int32 iSortCol_0, String sSortDir_0, String sSearch)
Run Code Online (Sandbox Code Playgroud)

.cs代码:

public void getUsers1(int iDisplayLength, int iDisplayStart, int iSortCol_0, string sSortDir_0, string sSearch)
{
    try
    {
        basicoperation bop = new basicoperation();
        DataTable dt;

        dt = bop.getUsers(iDisplayLength, iDisplayStart, iSortCol_0, sSortDir_0, sSearch); // fetching users

        dt.TableName = "usersDT1";

        //int iTotalRecords=0;
        //int iTotalDisplayRecords= 0;

        var retObj = new
        {
            iTotalRecords= 20,
            iTotalDisplayRecords= 10,
            aaData= dt
        };

        //string json = JsonConvert.SerializeObject(dt);

        JavaScriptSerializer js = new JavaScriptSerializer();

        Context.Response.Write(js.Serialize(retObj));
    }
    catch (Exception ex)
    {

        throw ex;
    }
}
Run Code Online (Sandbox Code Playgroud)

jas*_*ith 5

问题是你retObj包含一个DataTable,它不能按原样序列化为 JSON,因为它内部有循环引用。

本文展示了序列化数据表的不同方法;

http://www.c-sharpcorner.com/UploadFile/9bff34/3-ways-to-convert-datatable-to-json-string-in-Asp-Net-C-Sharp/

我的首选可能是最后一种方式

using Newtonsoft.JSON;  

public string DataTableToJSONWithJSONNet(DataTable table) {  
   string JSONString=string.Empty;  
   JSONString = JSONConvert.SerializeObject(table);  
   return JSONString;  
}  
Run Code Online (Sandbox Code Playgroud)