我正在开发一个ASP.NET MVC项目,我有一个控制器,我从外部Web API获取JSON数据。现在我想反序列化这个JSON数据并将其放入最终将传递到部分视图的模型中。
JSON数据:
{
"results":[
{
"name":"Company A",
"providerName":"Company Provider A"
...(More Data Below)
控制器:
[HttpGet]
[Route("company-info/companyinfogetapidata")]
[AllowAnonymous]
public ActionResult CompanyInfoGetApiData(string name, int CompanyCode, string city, string state, int zip)
{
/* Json Data is fetched properly */
var json = request.Result.Content.ReadAsStringAsync().Result;
JObject o = JObject.Parse(json);
JToken ApiData = o["results"];
// Now I want to pass the JSON data into my model
CompanyResultsModel getfetcheddata = new CompanyResultsModel();
// I tried using this method below but it's not working properly
getfetcheddata = Newtonsoft.Json.JsonConvert.DeserializeObject<CompanyResultsModel>(json);
// Pass the Model containing into the PartialView Result
return PartialView(@"~/Views/Shared/companies/_companyResults.cshtml", getfetcheddata);
}
型号:
public class CompanyResultsModel
{
public string companyName { get; set; }
public string companyProvider { get; set; }
}
查看:
@model Companies.CompanyResultsModel
<p>@Model.companyName</p>
<p>@Model.companyProvider</p>
在我将JSON数据传递到我的模型后,如果我使用上面的方法在我的视图中显示数据,它会正确返回我的所有数据吗?
非常感谢任何帮助!
答案 0 :(得分:1)
您收到的json与您的CompanyResultsModel
不符。它匹配包含名为results
的属性的模型,该属性是CompanyResultsModel
的集合。
创建以下模型
public class JsonResultModel
{
public IEnumerable<CompanyResultsModel> Results { get; set; }
}
并在控制器中
JsonResultModel model = JsonConvert.DeserializeObject<JsonResultModel>(json);
如果您只想将第一个CompanyResultsModel
返回到视图
return PartialView("_companyResults", model.Results.FirstOrDefault());