【问题标题】:Fill data from Dynamic list class to Json list将动态列表类中的数据填充到 Json 列表中
【发布时间】:2013-10-11 08:14:41
【问题描述】:

我很难找到正确的方法将我的动态数据放入 jQuery jqGrid 可以读取的列表中:

我到现在为止:

[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 需要这种类型的数据。 注意:我需要使用 DynamicClassList 列表中的键和值,因为这两个值都是动态的。

更新:我已添加:

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} "}]

任何帮助将不胜感激。

【问题讨论】:

  • 我想要返回的数据对于网络响应已经可读,无需进一步转换

标签: c# json list serialization dynamic


【解决方案1】:

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

示例:

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

【讨论】:

  • 是的,我知道,我试图弄清楚的部分是如何从我的动态方法生成(在您的示例中)var obj,一旦我可以生成它将起作用,请注意其中这是一个带有响应 [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)] 的 WebMethod,因此不需要序列化
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
相关资源
最近更新 更多