Return newtonsoft json 来自 WebMethod 的对象

Return newtonsoft json object from WebMethod

我想 return 来自 c# webmethod 的 JSON 对象,如果我使用 return 我有一个错误 "recussive reference found"。所以我决定使用 newtonsoft 序列化,但 returned 对象用双引号引起来。 {d:"my json"} 没有用。

我尝试使用此代码:

       [WebMethod(EnableSession = true)]
    public static void RecordList(int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
    {
        string error;
        var result = DataTools.Data("select id_individu,nom_indiv from individu limit 10",
            WebConfigurationManager.ConnectionStrings["TabloidConnection"].ConnectionString,
            out error);

        var rep = System.Web.HttpContext.Current.Response;
        rep.Clear();
        rep.ClearContent();
        rep.BufferOutput = true;
        rep.ContentType = "application/json; charset=UTF-8";


        //rep.Write("ab");
        rep.Write("{d:");
        rep.Write(JsonConvert.SerializeObject(new jTableResponse(result), Formatting.None));
        rep.Write("}");
        rep.Flush();
        //rep.SuppressContent = true;
        rep.End();
        //ct.ApplicationInstance.CompleteRequest();          

    }

public class jTableResponse
{

    private int totalRecordCount=0;
    private DataTable records;
    private string result = "OK";

    public string Result
    {
        get { return result; }
        set { result = value; }
    }

    public int TotalRecordCount
    {
        get { return totalRecordCount; }
        set { totalRecordCount = value; }
    }

    public DataTable Records
    {
        get { return records; }
        set { records = value; }
    }


    public jTableResponse(DataTable r)
    {
        Records = r;
        totalRecordCount = r.Rows.Count;
    }
}

但是我在 json 后面和后面添加了字符,就像这样(使用提琴手)

1d0 {d:{"Result":"OK","TotalRecordCount":10,"Records":[{"id_individu":1,"nom_indiv":"... "},{"id_individu":2,"nom_indiv":"RIVET"},{"id_individu":3,"nom_indiv":"COHEN"},{"id_individu":4,"nom_indiv":"VILLEROUGE"},{"id_individu":5,"nom_indiv":"CAILLARD"},{"id_individu":6, "nom_indiv":"DE CHEVRON VILLETTE"},{"id_individu":7,"nom_indiv":"ROYO"},{"id_individu":8,"nom_indiv": "ROQUES"},{"id_individu":9,"nom_indiv":"GUILLOT"},{"id_individu":10,"nom_indiv":"DORNE-CORRAZE"} ]}} 0

感谢您的回复

当我改变这个时

rep.Write("{d:");
rep.Write(JsonConvert.SerializeObject(new jTableResponse(result), Formatting.None));
rep.Write("}");

由此

rep.Write(JsonConvert.SerializeObject(new jTableResponse(result), Formatting.None));

它工作正常谢谢。