我得到以下JSON数据
[{"id":"1","text":"System Admin","target":{"jQuery1710835279177001846":12},"checked":true,"state":"open"},
{"id":"2","text":"HRMS","target":{"jQuery1710835279177001846":34},"checked":false,"state":"open"},
{"id":"3","text":"SDBMS","target":{"jQuery1710835279177001846":42},"checked":false},
{"id":"8","text":"Admin","target":{"jQuery1710835279177001846":43},"checked":false},
{"id":"9","text":"My test Admin","target":{"jQuery1710835279177001846":44},"checked":false,"state":"open"},
{"id":"24","text":"ModuleName","target":{"jQuery1710835279177001846":46},"checked":false,"state":"open"}]
,试图使用Json解析。Net使用强类型
这是我的属性类
public class testclass
{
public string id { get; set; }
public string text { get; set; }
public string @checked { get; set; }
public string state { get; set; }
public target jQuery1710835279177001846 { get; set; }
}
public class testclass2
{
public List<testclass> testclass1 { get; set; }
}
public class target
{
public string jQuery1710835279177001846 { get; set; }
}
,这里我试图访问数据,我得到异常
Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'QuexstERP.Web.UI.Areas.SysAdmin.Controllers.testclass' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.
我的控制器代码看起来像
public void Test(string Name, object modeldata)
{
var obj = JsonConvert.DeserializeObject<testclass>(Name);
}
你知道如何在c#中解决这个问题吗
你的Json字符串看起来有序列化数组对象,因为它包含[ ]
。这意味着你有一个Json字符串,它是在数组对象序列化后形成的。所以你需要反序列化成数组对象,试试this
var obj = JsonConvert.DeserializeObject<List<testclass>>(jsonString);
你有TestClass的数组。所以应该是这样的。
var model= JsonConvert.DeserializeObject<List<testclass>>(Name);
为什么你使用JSonConvert ?在MVC3中,你可以这样做
return Json(yourmodel,JsonRequestBehavior.AllowGet);
json对象是这样的
{
"id":"1",
"text":"System Admin",
"target":{
"jQuery1710835279177001846":12
},
"checked":true,
"state":"open"
}
我猜应该是这样的
{
"id":"1",
"text":"System Admin",
"jQuery1710835279177001846":12,
"checked":true,
"state":"open"
}