gpt4 book ai didi

c# - 如何将 JsonResult.Data 输出转换为原始类型?

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:42 24 4
gpt4 key购买 nike

我的 Controller 正在返回 List 的 Json 结果

Public ActionResult Index([DataSourceRequest] DataSourceRequest request)
{
var list = new List<Product>();
Json(list.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}

下面是我的单元测试方法的代码,我在其中调用了上面的方法:

//Act
var actualResult = _Controller.Index(request) as JsonResult;
var data = actualResult.Data;

现在我想将这个数据对象转换为它的原始类型,即列表。

我试过如下:-

var result = ser.Deserialize<List<Product>>(ser.Serialize(actualResult.Data));

但是我没有通过这个获取原始数据。任何人都可以帮助我,我们如何将 jsonresult.data 输出隐藏为其原始类型?

最佳答案

您的 Index 操作正在返回一个包含您的列表的 DataSourceResult,而不是一个简单的列表 (Json(list.ToDataSourceResult(request))。您首先需要将结果反序列化为 DataSourceResult 或 JsonObject,然后选择产品列表。

在 DataSourceResult(KendoUI 对象)中,列表位于数据属性中:

System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
var result = ser.Deserialize<Kendo.Mvc.UI.DataSourceResult>(ser.Serialize(actualResult.Data));
var list = result.Data; //as an ArrayList

使用 Javascript 对象:

System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
var result = (Dictionary<string, object>)ser.DeserializeObject(ser.Serialize(actualResult.Data));
var list = ser.Deserialize<List<Product>>(ser.Serialize(result["Data"]));

使用 Newtonsoft Json:

var result = JsonConvert.DeserializeObject<Newtonsoft.Json.Linq.JObject>(JsonConvert.SerializeObject(actualResult.Data));
var list = JsonConvert.DeserializeObject<List<Product>>(result.SelectToken("Data").ToString());

关于c# - 如何将 JsonResult.Data 输出转换为原始类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24340781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com