using Telerik.Newtonsoft.Json;
MVC控制器:
public ActionResult Index()
{
string responseStr = GetJSON();
var jObject = JsonConvert.DeserializeObject<TheViewModel>(responseStr);
if (jObject == null)
{
return Content("");
}
return View("Default", jObject);
}
临时硬编码JSON方法:
public string GetJSON() //to be replaced after testing
{
string json = @"{
'name': 'Trial 11.7',
'id': 2599,
'version': '11.7',
'product_id': '1040',
'time_of_execution': '2017-08-07T22:15:38.000Z',
'site_url': 'http://something.com/',
'mc_gem': '11.7',
'suite_gem': '11.7',
'passing_percentage': 95.65,
'failing_percentage': 4.35
}";
return json;
}
模特:
public class TheViewModel
{
public class RootObject
{
public string name { get; set; }
public int id { get; set; }
public string version { get; set; }
public string product_id { get; set; }
public string time_of_execution { get; set; }
public string site_url { get; set; }
public string mc_gem { get; set; }
public string suite_gem { get; set; }
}
}
问题是当我单步执行代码时,我得到以下值:
jObject {Master.Project.Mvc.Models.TheViewModel} Master.Project.Mvc.Models.TheViewModel
由于某种原因,我没有将JSON反序列化到对象中。它可能很简单,但我没有看到它。
我没有收到任何错误消息,以帮助确定控制器内部的问题。
任何帮助都将不胜感激。
答案 0 :(得分:2)
您正在尝试将JSON转换为TheViewModel
类型的对象,因为它正在寻找RootObject
您可以通过将RootObject
中的所有字段移出TheViewModel
或通过调用...DeserializeObject<TheViewMode.RootObject>(responseStr);
答案 1 :(得分:1)
重构你的代码,将'RootObject'类提取到它自己的文件中(或移动它以便它没有在类下定义。)将解决问题。