我正在尝试将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中尝试使用:
反序列化Jsonstringpublic 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; }
}
如果我查看本地变量数据。我找到了一个有效的jsong字符串:
[
[
{
"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.DeserializeObject&gt;(数据)时; 它将返回一条错误消息:
JsonSerializationException未被用户代码处理,例外 输入'Newtonsoft.Json.JsonSerializationException' newTonisoft.Json.ddl但未在用户代码中处理
其他信息:无法反序列化当前的JSON数组 (例如[1,2,3])进入类型'maps.Controllers.RootObject'因为 type需要一个JSON对象(例如{“name”:“value”})来反序列化 正确。
我该如何解决这个问题?这是正确的JavaScript方式吗?
答案 0 :(得分:1)
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);
结果是你的需要