如何将字符串数组反序列化为 class[]?

How can i deserialize an string array to class[]?

我的 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);
}