如何将Jsonstring反序列化为c#listObject
本文关键字:c#listObject 反序列化 Jsonstring | 更新日期: 2023-09-27 18:02:22
我正在尝试将Jsonstring反序列化为c#listObject。数据来自javascript,带有:
params = "data=" + JSON.stringify(queryResult.$$rows);
XHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
XHR.setRequestHeader("Content-length", params.length);
XHR.setRequestHeader("Connection", "close");
XHR.send(params);
然后在asp.net中尝试使用反序列化Jsonstring
public class HomeController : Controller
{
[HttpPost]
public ActionResult doWork(string data)
{
var dump = JsonConvert.DeserializeObject<List<RootObject>>(data);
return new EmptyResult();
}
}
public class RootObject
{
public string data { get; set; }
public string text { get; set; }
}
如果我在查找局部变量数据。我找到了一个有效的json字符串:
[
[
{
"data":"Australia",
"text":"Australia"
}
],
[
{
"data":"China",
"text":"China"
}
],
[
{
"data":"Hong Kong",
"text":"Hong Kong"
}
],
[
{
"data":"Indonesia",
"text":"Indonesia"
}
],
[
{
"data":"Netherlands",
"text":"Netherlands"
}
]
]
当asp.net试图执行JsonConvert.DescializeObject>(数据(时;它将返回一条错误消息:
JsonSerializationException未由的用户代码处理类型"Newtonsoft.Json.JsonSerializationException"发生在newTonisoft.Json.ddl,但未在用户代码中处理
附加信息:无法反序列化当前JSON数组(例如[1,2,3](转换为类型"maps.Controllers.RootObject",因为类型需要一个JSON对象(例如{"name":"value"}(来反序列化正确地
我该怎么解决这个问题?这是正确的javascript方式吗?
string jsonTxt = @"[
[
{
""data"":""Australia"",
""text"":""Australia""
}
],
[
{
""data"":""China"",
""text"":""China""
}
],
[
{
""data"":""Hong Kong"",
""text"":""Hong Kong""
}
],
[
{
""data"":""Indonesia"",
""text"":""Indonesia""
}
],
[
{
""data"":""Netherlands"",
""text"":""Netherlands""
}
]
]";
var result = JsonConvert.DeserializeObject<List<RootObject>[]>(jsonTxt);
结果是您需要