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));
它工作正常谢谢。
我想 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));
它工作正常谢谢。