2013-10-11 24 views
0

我必须找到一个问题的适当办法让我的动态数据到列表这是可以接受的jQuery的jqGrid阅读:填补动态列表类的数据为JSON列表

我至今:

[WebMethod] 
    [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)] 
    public List<DynamicClass> InvokeData(string q)//, out List<dynamic> list) 
    { 
     DataSet OutResult = null; 
     string _function = "ex_medicals"; 
     string[] qSplit = q.Split('&'); 
     _sqlSupporter._ConvertForSending(Convert.ToInt32(qSplit[1]), qSplit[0], _function, out OutResult); 
     //DataSet _return = _ConvertForSending(1, q, _function); 
     OutResult.Tables[0].TableName = OutResult.Tables[0].Rows[0]["name"].ToString(); 
     OutResult.Tables[1].TableName = OutResult.Tables[0].Rows[1]["name"].ToString(); 
     DataTable _data = OutResult.Tables["general"]; 
     List<DynamicClass> DynamicClassList = new List<DynamicClass>(); 
     ToObject dyna = new ToObject(); 
     int i = 0; 
     List<object> myObj = new List<object>(); 
     foreach (DataRow r in _data.Rows) 
     { 
      DynamicClass dynamicClass = new DynamicClass(); 
      dyna.ConvertRowToCustomer(r, out dynamicClass); 
      DynamicClassList.Add(dynamicClass); 
     } 
     return DynamicClassList; 
    } 

我想回到这个:

List<Object> Gridist = new List<Object>(); 

     Gridist.AddRange(new Object[]{ 
     new {id="1",name="Medical 1",city="Kiev",instituteTypeId="0"}, 
     new {id="2",name="Medical 2",city="Kherson",instituteTypeId="0"} 
     }); 

我已经所有的数据在我DynamicClassList(http://imgur.com/OtPFtAo),但是不知道如何得到它进入Gridist在该规范因为我的jqGrid需要这种类型的数据。 ONE NOTE:我需要使用DynamicClassList列表中的键和值,因为这两个值都是动态的。

UPDATE:我补充说:

var iSerializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
string iJSON = iSerializer.Serialize(dynamicClass.Property.properties); 
Gridist.Add(new Object[] { new { iJSON } }); 

IJson返回字符串完整然而iJSON看起来现在这个样子,是不是一个对象: [{ “iJSON”: “{\” ID \“: 1,“name”:“Medical 1”,“city”:“Kiev”,“instituteTypeId”:0}“},{”xJSON“:”{\“id \” :1,“name”:“Medical 1”,“city”:“Kiev”,“instituteTypeId”:0}“}]

任何帮助将不胜感激。

+0

哪里JSON? – weston

+0

我想要返回它的数据已经可读取的Web响应没有进一步转换 –

回答

0

你的web方法应该返回Json,你应该将你的列表对象序列化为json字符串。您可以使用像ServiceStack.Text或Json.Net这样的json序列化程序。

例如:

 var obj = new {Name = "x", Data = "asd"}; 
     Console.WriteLine(ServiceStack.Text.JsonSerializer.SerializeToString(obj)); 
+0

是的,我知道,我试图找出的部分是如何从我的动态方法生成(在你的例子中)var obj,尽快我可以生成,它会工作,请注意,这是一个WebMethod与响应[System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]所以序列化不是必需的 –