首页 > 解决方案 > 如何将字符串数组反序列化为类 []?

问题描述

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

标签: c#jsonjson.netdeserializationjson-deserialization

解决方案


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

推荐阅读