问题描述
我的 ajax 将以下数组发送到控制器
{"checkedValues":["{ \"o\": 1,\"v\":1}","{ \"o\": 1,\"v\":2}"]}
控制器以字符串数组的形式读取数据
public IActionResult Filter([FromBody] Rootobject checkedValues = null)
{
}
哪里
public class Rootobject
{
public string[] checkedValues { get; set; }
}
如何将数据反序列化为一个数组
public class Filter
{
public int o { get; set; }
public int v { get; set; }
}
我尝试了以下方法,但没有成功
public class Rootobject
{
public Filter[] checkedValues { get; set; }
}
解决方法
我以前见过这个:JSON 中的 JSON。这通常是一个错误。
作为一种解决方法,您需要进行双重反序列化:
public class Rootobject
{
public string[] checkedValues { get; set; }
}
public class Filter
{
public int o { get; set; }
public int v { get; set; }
}
var values = JsonConvert
.DeserializeObject<Rootobject>(json)
.checkedValues
.Select(JsonConvert<Filter>)
.ToList();
,
仅使用 newtonsoft 尝试此操作:
var reult = JsonConvert.DeserializeObject<List<Filter>>(checkedValues.checkedValues);
最后:
public IActionResult Filter([FromBody] Rootobject checkedValues = null)
{
var reult = JsonConvert.DeserializeObject<List<Filter>>(checkedValues.checkedValues);
}