【问题标题】:How can i deserialize an string array to class[]?如何将字符串数组反序列化为类 []?
【发布时间】:2021-01-17 13:11:04
【问题描述】:

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

【问题讨论】:

  • 修复你的 JavaScript 让它发送一些合理的东西

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    只用newtonsoft试试这个:

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

    最后:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      相关资源
      最近更新 更多