使用 System.Text.Json 将 json 数组反序列化为 C# 对象

mar*_*777 5 .net c# json .net-core

我有一些从 API 返回的 JSON,其形式为

[
    {
        "param1":"value",
        "param2":"value2",
        ...
    },
    {
        "param1":"value",
        "param2":"value2",
         ...
    }
]
Run Code Online (Sandbox Code Playgroud)

我有一堂课Foo

public class Foo
{
    public string param1 { get; set; }
    public string param2 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用System.Text.Json图书馆。

如果我像这样反序列化:

var output = JsonSerializer.Deserialize<List<Foo>>(JsonStr)
Run Code Online (Sandbox Code Playgroud)

一切正常,在“输出”中我有一个Foo.

但是,我想反序列化到另一个类中,这样我就可以从基类进行一些继承,该基类可以执行一些检查以查看是否有数据和其他一些位和鲍勃。

public class Bar : BarBase
{
    public List<Foo> data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

显然,如果我尝试反序列化为Bar,它会抛出一个错误,指出它无法将 JSON 映射到对象。

是否有任何属性可用于声明 JSON 应映射到“数据”,或者是否有其他方法可以实现此目的?

干杯马克

Rev*_*vox 1

这个问题可以通过让Bar类继承List来解决

public class Bar : List<Foo>
{
  public List<Foo> data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我以为我会有其他想法。不敢相信我没有尝试过这个。 (2认同)