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

时间:2021-01-17 13:11:04

标签: c# json json.net deserialization json-deserialization

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

2 个答案:

答案 0 :(得分:2)

我以前见过这个: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();

答案 1 :(得分:0)

仅使用 newtonsoft 尝试此操作:

var reult = JsonConvert.DeserializeObject<List<Filter>>(checkedValues.checkedValues);

最后:

public IActionResult Filter([FromBody] Rootobject checkedValues = null)
{
  var reult = JsonConvert.DeserializeObject<List<Filter>>(checkedValues.checkedValues);
}
相关问题